में सभी प्रश्नों के लिए LIMIT और ऑफ़सेट लागू करना मैं SQLAlchemy (MySQL से पूछताछ) के साथ एक एपीआई डिज़ाइन कर रहा हूं और मैं अपने सभी प्रश्नों को पेज_साइज (LIMIT) और page_number (OFFSET) पैरामीटर के लिए मजबूर करना चाहता हूं।SQLAlchemy
वहाँ SQLAlchemy के साथ ऐसा करने का एक साफ रास्ता नहीं है? शायद कस्टम क्वेरी ऑब्जेक्ट बनाने के लिए किसी प्रकार का कारखाना बनाना? या शायद मिक्सीन कक्षा के साथ ऐसा करने का एक अच्छा तरीका है?
मैं स्पष्ट बात करने की कोशिश की और यह काम नहीं किया क्योंकि के बाद सभी फिल्टर की स्थिति लागू किया गया है .limit() और .offset() बुलाया जाना चाहिए:
def q(page=0, page_size=None):
q = session.query(...)
if page_size: q = q.limit(page_size)
if page: q = q.offset(page*page_size)
return q
जब मैं इस का उपयोग कर प्रयास करें, मैं
sqlalchemy.exc.InvalidRequestError: Query.filter() being called on a Query which already has LIMIT or OFFSET applied. To modify the row-limited results of a Query, call from_self() first. Otherwise, call filter() before limit() or offset() are applied.
कृपया अपने प्रश्न में एक समाधान को संपादित नहीं करते। इसके बजाय, इसे नीचे एक अलग उत्तर के रूप में पोस्ट करें। – Matt