2010-01-18 17 views
5

में एक दृश्य पूछना मैं जानना चाहता हूं कि SQLAlchemy को किसी प्रश्न पूछने में समस्याएं हैं या नहीं। अगर मैं की तरह सर्वर पर सामान्य एसक्यूएल के साथ दृश्य क्वेरी:SQLAlchemy

SELECT * FROM ViewMyTable WHERE index1 = '608_56_56'; 

मैं रिकॉर्ड की एक पूरी गुच्छा मिलता है। लेकिन स्क्लेक्लेमी के साथ मुझे केवल पहला मिलता है। लेकिन गिनती में सही संख्या है। मुझे कोई जानकारी नहीं है की क्यों।

यह मेरा एसक्लाक्लेमी कोड है।

myQuery = Session.query(ViewMyTable) 
erg = myQuery.filter(ViewMyTable.index1 == index1.strip()) 

# Contains the correct number of all entries I found with that query. 
totalCount = erg.count() 
# Contains only the first entry I found with my query. 
ergListe = erg.all() 

उत्तर

8

अगर आप ViewMyTable मैप किया गया है, क्वेरी केवल पंक्तियों एक पूरी तरह से गैर-शून्य प्राथमिक कुंजी है कि वापस आ जाएगी। यह व्यवहार संस्करण 0.5 और निम्न के लिए विशिष्ट है - 0.6 पर, यदि किसी भी कॉलम में प्राथमिक कुंजी में गैर-न्यूल है, तो पंक्ति को एक उदाहरण में बदल दिया जाता है। अपने मानचित्रकारों करने के लिए ध्वज allow_null_pks=True निर्दिष्ट करें कि आंशिक प्राथमिक कुंजी सुनिश्चित करने के लिए अभी भी गिनती:

mapper(ViewMyTable, myview, allow_null_pks=True) 

OTOH पंक्तियों लौटे तो प्राथमिक कुंजी के लिए सभी nulls है, तो SQLAlchemy नहीं एक इकाई बना सकते हैं, क्योंकि यह में यह जगह नहीं कर सकते पहचान मानचित्र आप इसके लिए विशेष रूप से पूछताछ करके व्यक्तिगत कॉलम पर जा सकते हैं:

for id, index in session.query(ViewMyTable.id, ViewMyTable.index): 
    print id, index