1.查询:
查询所有: user_list= user.query,all() user_list =列表 模型类.query.all()    ~  select *
from user; 如果有条件的查询:          模型类.query.filter_by(字段名 = 值)   ~  select * from
user where 字段=值;          模型类.query.filter_by(字段名 = 值).first() #取列表的第一个值 
select * from user where age>17 and gender='男'; select * from user where
username like 'zhang%'; select * from user where rdatetime> xxx and rdatetime <
xxx;          模型类.query.filter()  里面是布尔的条件   模型类.query.filter(模型名.字段名 == 值)    
     模型类.query.filter_by()  里面是一个等值   模型类.query.filter_by(字段名 = 值)

***** 模型类.query.filter() ******
1. 模型类.query.filter().all()   -----> 列表 2. 模型类.query.filter().first()
 ----->对象 3.User.query.filter(User.username.endswith('z')).all()  
#username字段以z结尾的所有 select * from user where username like '%z';  
User.query.filter(User.username.startswith('z')).all()  #username字段以z开头的所有 #
select * from user where username like 'z%';  
User.query.filter(User.username.contains('z')).all()  #username字段中含有z的所有 #
select * from user where username like '%z%';  
User.query.filter(User.username.like('z%')).all() #模糊匹配
  多条件:
  from sqlalchemy import or_, and_,not_   并且: and_    或者: or_   非: not_  
User.query.filter(or_(User.username.like('z%'),
User.username.contains('i'))).all()    类似: select * from user where username
like 'z%' or username like '%i%';  
User.query.filter(and_(User.username.contains('i'),
User.rdatetime.__gt__('2020-05-25 10:30:00'))).all()    # select * from user
where username like '%i%' and rdatetime < 'xxxx'   补充:__gt__,__lt__,__ge__(gt
equal),__le__ (le equal)  ----》通常应用在范围(整型,日期)        也可以直接使用 >  <  >=  <=  !=  
User.query.filter(not_(User.username.contains('i'))).all()   18 19 20 17 21 22
....   select * from user where age in [17,18,20,22];

排序:order_by

user_list =
User.query.filter(User.username.contains('z')).order_by(-User.rdatetime).all()
 # 先筛选再排序     user_list = User.query.order_by(-User.id).all()  对所有的进行排序    
注意:order_by(参数):     1。 直接是字符串: '字段名'  但是不能倒序     2。 填字段名: 模型.字段  
 order_by(-模型.字段)  倒序
限制: limit
    # limit的使用 + offset     # user_list = User.query.limit(2).all()   默认获取前两条
    user_list = User.query.offset(2).limit(2).all()   跳过2条记录再获取两条记录

 总结:

 1. User.query.all()                     所有
 2. User.query.get(pk)                   #根据主键查询
 3. User.query.filter()   *   ???????
     如果要检索的字段是字符串(varchar,db.String):
       User.username.startswith(' z')       #以什么z字母开头
       User.username.endswith(' z')                 #以什么z字母结尾头
       User.username.contains('z')                     #包含z
       User.username.like('   %z')                          #模糊匹配     
       User.username.in_(['','',''])                            #在这个中括号中
       User.username == 'zzz'                            #
    如果要检索的字段是整型或者日期类型:
       User.age.__lt__(18)                   
       User.rdatetime.__gt__('.....')
       User.age.__le__(18)
       User.age.__ge__(18)
       User.age.between(15,30)

     多个条件一起检索: and_, or_
     非的条件: not_

     排序:order_by()
     获取指定数量: limit() offset()
 4. User.query.filter_by(字段名=‘’)

 删除:
 两种删除:
 1。逻辑删除(定义数据库中的表的时候,添加一个字段isdelete,通过此字段控制是否删除)
 id = request.args.get(id)
 user = User.query.get(id)
 user.isdelete = True
 db.session.commit()

 2。物理删除(彻底从数据库中删掉)
 id = request.args.get(id)
 user = User.query.get(id)
 db.session.delete(user)
 db.session.commit()

 更新:
 id = request.args.get(id)
 user = User.query.get(id)
 # 修改对象的属性
 user.username= xxxx
 user.phone =xxxx
 # 提交更改
 db.session.commit()

 

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信