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

('एसक्यूएल में 0 पैरामीटर मार्कर हैं, लेकिन 50 पैरामीटर दिए गए थे', 'एचवाई000') या टाइप एरर:'टुपल' ऑब्जेक्ट कॉल करने योग्य नहीं है

विधि executemany(sql, seq_of_parameters) मापदंडों के एक सेट के लिए एक ही SQL कथन को कई बार निष्पादित करता है। इसलिए, दूसरा तर्क, seq_of_parameters , पैरामीटर टुपल्स का एक क्रम होना चाहिए, न कि केवल एक पैरामीटर टपल:

cursor.executemany("update sampledata SET POS = ? where SRNO = ?", [(x[a], a)])

यदि आप केवल एक टपल पास करते हैं, तो कर्सर मान लेगा कि पहला आइटम, x[a] है , मापदंडों का एक टपल है। मुझे लगता है कि यह 50 वर्णों की एक स्ट्रिंग है और 50 पैरामीटर के अनुक्रम के रूप में व्याख्या की जाती है, जबकि SQL स्ट्रिंग केवल 2 की अपेक्षा करती है।

इसके अलावा, ध्यान दें कि मैंने ? . का उपयोग किया है %s . के बजाय प्लेसहोल्डर प्रतीक के रूप में , चूंकि बाद वाला पीओओडीबीसी द्वारा समर्थित नहीं है, क्योंकि उसने बताया कि यह 0 पैरामीटर की अपेक्षा करता है।

आपके मामले में, आप execute() . का उपयोग करना चाह सकते हैं लूप में विधि, चूंकि आप केवल एक बार प्रति पुनरावृत्ति कथन चलाना चाहते हैं:

cursor.execute("update sampledata SET POS = ? where SRNO = ?", (x[a], a))



  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. आप विकास, परीक्षण और उत्पादन में डेटाबेस का प्रबंधन कैसे करते हैं?

  3. निश्चित बिंदु तक योग - MySql

  4. तैयार कथन के साथ तालिका नहीं बना सकता

  5. java.sql.SQLException:फ़ील्ड 'आईडी' का कोई डिफ़ॉल्ट मान नहीं है