flask-SQLAlchemy怎么查询具体字段

就是类似于

select title, page from table;

在flask-SQLAlchemy的文档上好像会看见了

Page.query.all()

这个是返回字符串,我想要的是返回想要的字段的值。

阅读 39.2k
5 个回答

在model里面写上这个:

def query_user_id(self, mac_id):
    obj = self.filter_by(mac_id=mac_id).first()
    return obj.user_id

下面是调用的地方:

user_id = User.query.query_user_id(mac_id)

当然,上面只是一条记录,如果是多条记录的话就只能返回对象集,然后从对象集中遍历了。

还有其他方法就是在里面写sql语句了,也很方便的。

Flask-SQLAlchemy 的 query 是直接查询 model,查出来的一定是一个 model 对象。

如果要查询单个字段的话,应该用 session 去 query model。

a = db.session.query(Page.title, Page.page).all()
print(a)

b = Page.query.with_entities(Page.title, Page.page).all()
print(b)

这两个查询返回的都是一个列表,列表内的元素是一个元组,不过不是 Python 内置的元组,是 sqlalchemy.util._collections.KeyedTuple。

db.session.query(字段)
这样去查询,就是要注意查询出来的类型

新手上路,请多包涵

如果一定基于Model查询,而不是用session查询,正确的方法应该使用:
Page.query.with_entities(Page.title, Page.page).all()
但仍然有个问题,如果表中有many_to_one的外键关系,似乎不能通过这种方法嵌套查询出来。

返回的难道不是Page对象?
query的话Page.query.filter(title="xxx").all()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进