python版本:3.6.5
1.query中filter和filter_by的区别:
filter() | filter_by() |
传入参数为表达式 query(User.name).filter(User.name==’ss’) | 传入参数为变量 query(User.name).filter_by(fullname=’ss’) |
2.常用查询语句:
(1)简单查询
session.query(User).all()
session.query(User.name, User.fullname).all()
session.query(User, User.name).all()
(2)带条件查询
session.query(User).filter_by(name='user').all()
session.query(User).filter(User.name == "user").all()
session.query(User).filter(User.name.like("user%")).all()
(3)sql过滤
session.query(User).filter("id>:id").params(id=1).all()
(4)关联查询
session.query(User, Address).filter(User.id == Address.user_id).all()
session.query(User).join(User.addresses).all()
session.query(User).outerjoin(User.addresses).all()
(5)聚合查询
session.query(User.name, func.count('*').label("user_count")).group_by(User.name).all()
session.query(User.name, func.sum(User.id).label("user_id_sum")).group_by(User.name).all()
(6)存在查询
session.query(User).filter(exists().where(Address.user_id == User.id))
session.query(User).filter(User.addresses.any())
参考:
https://blog.csdn.net/weixin_42670402/article/details/84522877