SQLAlchemy查询只返回n个结果?

Xar*_*Xar 65 sqlalchemy

我一直在谷歌搜索和阅读SQLAlchemy文档,但没有找到我要找的东西.

我在SQLAlchemy中寻找一个函数,它将查询返回的结果数量限制为某个数字,例如:5?像first()或的东西all().

jkm*_*acc 116

使用限制方法.

query.(Model).filter(something).limit(5).all()
Run Code Online (Sandbox Code Playgroud)


mco*_*lak 8

替代语法

query.(Model).filter(something)[:5].all()
Run Code Online (Sandbox Code Playgroud)

  • 如果你这样做 [:5] 我认为数据库仍然会提取所有结果,然后你只会使用最后 5 个结果。绝对最好使用 limit 来防止数据库返回额外的数据。 (6认同)
  • SQLAlchemy==1.1.15,引发:`AttributeError:'list'对象没有属性'all'` (2认同)
  • 使用这个查询: query.(Model).filter(something).limit(5) 它在 SQLAlchemy==1.1.15 中工作正常 (2认同)

Ahm*_*mad 5

如果你需要它来分页,你可以这样做:

query = db.session.query(Table1, Table2, ...).filter(...)

if page_size is not None:
   query = query.limit(page_size)
if page is not None:
   query = query.offset(page*page_size)
query = query.all()
Run Code Online (Sandbox Code Playgroud)

或者,如果您查询一张表并拥有一个模型,您可以:

query = (Model.query(...).filter(...))
                   .paginate(page=start, per_page=size))
Run Code Online (Sandbox Code Playgroud)