2012-10-11 15 views
6

soru: Bir sorgu nesnesine önceden uygulanmış bir .limit() öğesini nasıl kaldırırım.Bir sorgu nesnesine zaten uygulanan bir .limit() öğesini nasıl kaldırırım

Halihazırda .limit (N) uygulanmış bir Sorgum var. Daha sonra, bir .order_by uygulamasının uygulanabilmesi için, sorgudaki sınırı kaldırmak istiyorum. Sipariş, herhangi bir sınır veya sapmadan önce uygulanmalıdır. başarısız

örnek:

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

yaptığım çalıştı:

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

Ama bu işe yaramaz.

Bunun sebebi, sınırın gerçekte başka bir yerde makul bir varsayılan sınır olarak gerçekleşmesidir.

Teşekkür

+0

Kabul cevap harika ama dışarı faktör isteyebilirsiniz Bu bir "sorgu ayarları" sınıfının bir tür mantığı. Özel durumun ne olduğundan emin değilsin. – Milimetric

cevap

10

limit(None) limitini iptal edecektir. O çalışmıyor ise, ben 0.6.8 dönebildiyse bunu test, belki sqlalchemy bir süper eski sürümünü kullanıyor olabilirsiniz:

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 
İlgili konular