Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं रिश्तों का उपयोग करके एक प्रश्न उत्पन्न करने में असमर्थ क्यों हूँ?

आपकी ओआरएम कक्षाएं ठीक दिखती हैं। यह वह प्रश्न है जो गलत है।

संक्षेप में आपको वह "इंस्ट्रूमेंटेड एट्रिब्यूट" त्रुटि मिल रही है क्योंकि आप session.query का दुरुपयोग कर रहे हैं विधि।

दस्तावेज़ों से session.query विधि तर्क के रूप में लेती है, "SomeMappedClass" या "इकाइयाँ"। आपके पास 2 मैप किए गए वर्ग परिभाषित हैं, Tournament , और TournamentMaster . ये "इकाइयाँ" आमतौर पर या तो आपकी मैप की गई कक्षाएं (ORM ऑब्जेक्ट) या इन मैप की गई कक्षाओं का एक कॉलम होती हैं।

हालांकि आप Tournament.tournament_master.id_ . में पास हो रहे हैं जो एक "मैप्डक्लास" या एक कॉलम नहीं है और इस प्रकार एक "इकाई" नहीं है जो session.query है उपभोग कर सकते हैं।

इसे देखने का दूसरा तरीका यह है कि Tournament.tournament_master.id_ पर कॉल करके आप 'टूर्नामेंट' वर्ग से 'टूर्नामेंटमास्टर' रिकॉर्ड (या उदाहरण) तक पहुंचने का प्रयास कर रहे हैं, जिसका कोई मतलब नहीं है।

यह मेरे लिए बिल्कुल स्पष्ट नहीं है कि आप वास्तव में क्वेरी से वापस आने की क्या उम्मीद कर रहे हैं। किसी भी मामले में हालांकि यहाँ एक शुरुआत है।

इसके बजाय

qry = session.query(Tournament.tournament_master.id_).limit(100)

कोशिश करें

qry = session.query(Tournament, TournamentMaster).join(TournamentMaster).limit(100)

यह केवल id_ फ़ील्ड को वापस करने के लिए भी काम कर सकता है (परीक्षण नहीं किया गया है), यदि आपका इरादा ऐसा है

qry = session.query(Tournament, TournamentMaster).join(Tournament).with_entities(TournamentMaster.id_).limit(100)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL का उपयोग करने के तरीके पर एक व्यापक मार्गदर्शिका

  2. MySQL कनेक्शन त्रुटि जो मैंने कभी नहीं देखी

  3. कॉलम के लिए MAX मान लौटाते समय निम्नतम-आईडी पंक्ति हमेशा क्यों लौटाई जाती है?

  4. कमांड लाइन में ssh के माध्यम से दूरस्थ मशीन पर MySQL क्वेरी चलाएँ

  5. एक साधारण पूर्ण-पाठ खोज खोज रहे हैं? Word Stemming के साथ MySQL InnoDB + CakePHP आज़माएं