SQLAlchemy 是Python 社区最知名的 ORM 工具之一,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。
其中查询是最常使用的功能之一。
⽅法说明
- get 根据主键进⾏查询,查到返回对象,没查到返回None
- get_or_404 功能同上,查不到时,直接报404错
- all 查询所有数据,返回⼀个列表(元素全是对象)
- first 返回第⼀条数据,没有时返回None
- first_or_404 功能同上,查不到时报404错
- limit 限制结果集数量,返回查询对象,可以继续进⾏链式查询操作
- offset 设置偏移量,返回查询对象,可以继续进⾏链式查询操作
- order_by 结果集排序,可以指定多个字段,asc升序(默认),desc降序
- count 统计总数
案例
- all() 返回⼀个列表 包含所有对象
⽤法:类名.query.all()
db.session.query(模型名).all()
u = User.query.all()[0:2]
u = User.query.all()
u = db.session.query(User.username,User.password).all() #指定字段
u = db.session.query(User).all()
- first() 取出第⼀条数据
data = User.query.first()
print(data,type(data))
- get() 只能获取主键对应的数据 查询不到返回None
- User.query.get(id值)
- 字段列表
user = User.query.with_entities(User.username,User.sex).all()
user = db.session.query(User.username,User.sex).all()
- distinct
from sqlalchemy import distinct
data = db.session.query(User.sex).distinct().all()
data = db.session.query(distinct(User.sex)).all()
data = User.query.with_entities(distinct(User.sex)).all()
- 别名
# 表别名
ub = aliased(UserHobby,name='ub')
data = db.session.query(ub).all()
#字段别名
data = User.query.with_entities(User.username.label('name'),
User.sex).all()
- 排序
(1) 默认升序/asc()
(2) -降序/desc()
data = User.query.order_by(User.age).limit(1) #取出年龄最⼩
data = User.query.order_by(-User.age).limit(1) #取出年龄最⼤
data = User.query.filter().order_by(-User.username,User.sex).all()
data =User.query.filter().order_by(User.username.desc(), User. sex.asc()).all()