返回SQLAlchemy搜索查询的结果

时间:2014-02-14 00:08:04

标签: python mysql sqlalchemy

我正在尝试将结果发送到SQLAlchemy查询。我知道如果我循环查询,我可以将结果放在一个列表中(如下所示),但这对于大量结果似乎效率低下,并且当结果为单个数字时(如下所示)看起来很难看。是否有更直接和/或更有效的方法来返回查询结果?

mylist = []
for item in session.query(func.max(mytable.id)):
    mylist.append(item)

2 个答案:

答案 0 :(得分:4)

像你一样循环结果是正确的。您还可以使用all()来获取序列(行)列表。也许更有效的方法是不将数据存储在列表中,获得较小的结果集,和/或立即对每一行进行操作。如果您的DBMS支持,您也可以使用服务器端游标。

如果只提取了一个带有一个字段的行,则可以使用first()并获取返回序列的第一个元素。代码方面,这可能是最有效的:

maxid_mytable = session.query(func.max(mytable.id)).first()[0]

答案 1 :(得分:1)

这是等效的

mylist = session.query(func.max(mytable.id)).all()