问题:如何删除已应用于查询对象的.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)
但这不起作用。
我想要这个的原因是,限制实际上发生在另一个地方作为合理的默认限制。
由于
答案 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