【问题标题】:SQLAlchemy Expression Language first or oneSQLAlchemy 表达式语言第一个或一个
【发布时间】:2017-11-02 20:40:58
【问题描述】:

我正在使用 sqlalchemy 表达式语言(即 Core)。我正在尝试构建一个只返回一个结果的查询。

我想做

query = select([table]).where(cond).one()

query = select([table]).where(cond).first()

但这只会产生

AttributeError: 'Select' object has no attribute 'one'

离我最近的是

query = select([table]).where(cond).limit(1)

但这并不完全令人满意,因为我得到了一个我想要一个结果的结果列表。我可以通过插入额外的逻辑来解决问题,但我会更乐意找到一种干净利落的方法。我也不想使用纯文本查询。

有什么想法吗?非常感谢。

【问题讨论】:

  • query = select([table]).where(cond).first() 应该可以正常工作而不会抛出该错误并返回 1 行。你也可以试试fetchone
  • 如果我尝试,我会得到以下信息:AttributeError: 'Select' object has no attribute 'first'

标签: python sqlalchemy


【解决方案1】:

onefirst 是可用于 ORM 查询对象的方法。仔细检查后,您可以看到它们导致执行查询,然后发布流程以获得第一个/唯一条目和错误检查等。

我检查过的 SQL 方言实际上似乎没有内置用于查询的功能(哎呀,我以为他们有)。他们有limit 或类似的东西。

唯一的选择是使用limit 和一些逻辑或一些调用来执行或处理结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2020-01-03
    相关资源
    最近更新 更多