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

MySql कर्सर.execute () केवल एक पैरामीटर के साथ:एक स्ट्रिंग को सूची में क्यों काटा जाता है?

समस्या यह है कि ('hello') एक स्ट्रिंग है और ('hello',) एक टुपल है . आपको अपने प्लेसहोल्डर्स के लिए हमेशा एक टपल (या सूची की तरह अन्य संग्रह) को मूल्यों के रूप में पास करने की आवश्यकता होती है। इसका कारण यह है कि आपके प्लेसहोल्डर स्थित हैं आपकी क्वेरी में, इसलिए तर्कों में भी कुछ क्रम होना चाहिए - और टुपल्स और सूचियाँ वस्तुओं के क्रमबद्ध चयन को प्राप्त करने के दो तरीके हैं।

चूंकि यह एक टपल या अन्य संग्रह की अपेक्षा कर रहा है, 106 [1, 0, 6] . में परिवर्तित हो जाता है . अगर आप (106,) . में पास होते हैं , इसकी सही व्याख्या की जाएगी।

परदे के पीछे यही चल रहा है:

>>> for i in '106':
...     print(i)
...
1
0
6
>>> for i in ('106',):
...    print(i)
...
106

तो, आपका 'हैक' वास्तव में सही समाधान है, आपको बस अतिरिक्त चर की आवश्यकता नहीं है:

q = 'SELECT Last_Request_Time FROM Products WHERE idProduct = %s'
cursor.execute(q, (idProduct,))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Godaddy पर MySQL और Entity Framework का उपयोग करते हुए सुरक्षा अपवाद

  2. पीडीओ:दूरस्थ वेबसाइट पर डेटाबेस कनेक्शन

  3. मैं PHP में MySQL के लिए प्रतिबद्ध/रोलबैक कैसे कार्यान्वित कर सकता हूं?

  4. दिनांक समय फ़ील्ड के समय भाग को अनदेखा करते हुए MySQL में तिथियों की तुलना करना

  5. पीडीओ बाइंडपरम () कई नामित मापदंडों के साथ