10

问题:如何删除已应用于查询对象的 .limit() 。

我有一个已经应用 .limit(N) 的查询。然后我想从查询中删除限制,以应用 .order_by。Order by 必须在任何限制或抵消之前应用。

失败的例子:

query = session.query(Object).limit(10)
query = query.order_by(Object.field)

我试着做:

query = session.query(Object).limit(10)
query = query.limit(None) # or False
query = query.order_by(Object.field)

但这不起作用。

我想要这个的原因是,这个限制实际上发生在另一个地方,作为一个合理的默认限制。

谢谢

4

1 回答 1

16

limit(None)将取消限制。如果这不起作用,您可能使用的是 SQLAlchemy 的超旧版本,我一直测试到 0.6.8:

from sqlalchemy import Column, Integer
from sqlalchemy.orm import Session
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class A(Base):
    __tablename__ = "a"

    id = Column(Integer, primary_key=True)

s = Session()

q = s.query(A).limit(5)

q = q.limit(None).order_by(A.id)

print q
于 2012-10-11T21:58:35.907 回答