【问题标题】:Return Results of SQLAlchemy Search QuerySQLAlchemy 搜索查询的返回结果
【发布时间】:2014-03-13 03:54:46
【问题描述】:

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

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

【问题讨论】:

  • 返回结果到底是什么?你需要索引,还是我们循环足够?对于单个结果,看起来很丑是什么意思?

标签: python mysql sqlalchemy


【解决方案1】:

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

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

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

【讨论】:

  • 这在单个结果的实例中会更整洁,但不适用于 n > 1。
  • @Michael 那么你就像@geertjanvdk 建议的那样使用了.all()
【解决方案2】:

这将是等价的

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

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 2021-02-10
    • 2014-01-05
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多