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)

你可能感兴趣的:(python,mysql,数据库)