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

时间:2012-10-11 09:16:21

标签: sqlalchemy

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

我有一个已经应用了.limit(N)的查询。然后我想从查询中删除限制,以应用.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)

但这不起作用。

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

由于

1 个答案:

答案 0 :(得分:12)

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