我正在尝试将结果发送到SQLAlchemy
查询。我知道如果我循环查询,我可以将结果放在一个列表中(如下所示),但这对于大量结果似乎效率低下,并且当结果为单个数字时(如下所示)看起来很难看。是否有更直接和/或更有效的方法来返回查询结果?
mylist = []
for item in session.query(func.max(mytable.id)):
mylist.append(item)
答案 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()