sqlchemy filter和filter_by

1、filter引用列名时,使用“类名.属性名”的方式,比较使用两个等号“==”

2、filter_by引用列名时,使用“属性名”,比较使用一个等号“=”

3、在使用多条件匹配的时候,filter需要借助sqlalchemy里的and_或者连续调用filter来实现, 而filter_by不需要,直接把多个匹配条件写在一起

4、在使用多条件匹配时,用到>=、>、<=、<,只有filter支持

举例:
1.查询id=1的表项
sql:

select * from User where id=1;

filter_by:

session.query(User).filter_by(id=1)

filter:

session.query(User).filter(User.id==1)

2.查询 name=‘Tom’ and age=16的表项
sql:

select * from User where name='Tom' and age=16;

filter_by:

filters = {’name': ‘Tom', ‘age': 16}
session.query(User).filter_by(**filters).first()

filter:

session.query(User).filter(User.name=='Tom').filter(User.age==16)
session.query(User).filter(_and(User.name=='Tom',User.age==16))
  1. 查询name=‘Tom’ or age=16的表项

filter_by满足不了要求,使用filter

session.query(User).filter(or(User.name=='Tom',User.age==16))

4.查询年龄大于18的表项
filter_by满足不了要求,使用filter

session.query(User).filter(User.age>18)

PS:所有的query操作都是生成orm对象,用于拼接sql语句,只有在执行first或者all操作的时候才会连接db进行事务处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值