【问题标题】:What is the query that is used in when I use square brackets with an sqlalchemy query?当我在 sqlalchemy 查询中使用方括号时使用的查询是什么?
【发布时间】:2021-02-27 06:29:17
【问题描述】:

当使用以下查询时:

Foo.query.filter_by(bar="bar")[:20]

是否加载与过滤器匹配的所有对象,我只选择前 20 个或仅加载前 20 个对象。如果是第二种,有没有办法只加载特定数量的对象?

提前谢谢各位。

【问题讨论】:

  • 除了效率还有什么区别?
  • 没什么,只是效率。

标签: python sqlalchemy


【解决方案1】:

它执行查询和过滤,然后使用普通的 Python 切片结果。

如果您希望它仅加载特定数量的记录,请使用slice() 方法。

Foo.query.filter_by(bar="bar").slice(0,20)

这会在查询中添加LIMIT 子句,因此数据库永远不会返回范围之外的任何记录。

【讨论】:

    【解决方案2】:

    [] 是纯 python,与查询无关。这意味着所有记录(基于过滤器返回,您只需要 20 条)。如果您只想从 db 中返回 20 条记录,请使用 limit。 见SQLAlchemy query to return only n results?

    【讨论】:

    • 谢谢,我就是这么想的。
    猜你喜欢
    • 1970-01-01
    • 2013-02-03
    • 2012-07-29
    • 2021-08-04
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多