今天尝试了一下,sqlalchemy 指定字段查询的几种方法,主要是with_entities 和 load_only(需要import 一下)
# 指定字段查询 的几种方法 # d = Users.query.with_entities(Users.id,...).all() # 返回字段列表 [(1,),(3,)] # c = db.session.query(Users.id).all() # 返回字段列表 [(1,),(3,)] # a = Users.query.options(load_only('id',...)).all() # 返回字段对象列表[<Users 1>, <Users 3>]
还有支持子查询
db.session.query(User).options( subqueryload(User.addresses).load_only(Address.email_address))
网上查了好久,去官网找到有:
https://docs.sqlalchemy.org/en/14/orm/loading_columns.html#sqlalchemy.orm.load_only
sqlalchemy 读取表中所有id,[1,2,3]
需要这样转换一下,
list(map(lambda x: int(x[0]), db.session.query(Users.id).all()))
或者:更好理解的
[x.id for x in db.session.query(Users).all()]