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

पाइथन के साथ MySQL को कैसे अपडेट करें जहां फ़ील्ड और प्रविष्टियां एक शब्दकोश से हैं?

आप स्ट्रिंग इंटरपोलेशन का उपयोग करने में शाब्दिक मूल्य नहीं डालना चाहते हैं - SQL इंजेक्शन हमले अच्छी बात नहीं है (tm) हैं . इसके बजाय, आप अपने डेटाबेस के लिए प्रासंगिक प्लेसहोल्डर सिंटैक्स का उपयोग करते हैं (मुझे लगता है कि MySQL '%s' है)।

नोट:मैं .format . का उपयोग कर रहा हूं यहां, यदि आप चाहें तो % का उपयोग करने के लिए बदलें, लेकिन किसी भी % से बचें

d = {'col1': 'val1', 'col2': 'val2'}
sql = 'UPDATE table SET {}'.format(', '.join('{}=%s'.format(k) for k in d))
print sql
# 'UPDATE table SET col2=%s, col1=%s'

मान लें कि cur एक डीबी कर्सर है जो क्वेरी करने का सही तरीका है:

cur.execute(sql, d.values())

यह काम करता है क्योंकि हालांकि एक शब्दकोश का क्रम प्रभावी ढंग से मनमाना क्रम है, एक ताना की चाबियों/मानों का क्रम सुसंगत होगा जैसे कि dict(zip(d.keys(), d.values())) == d



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या उसी कॉलम में प्राथमिक कुंजी और दूसरे कॉलम में विदेशी कुंजी बाधा हो सकती है?

  2. कैरेक्टर_सेट_कनेक्शन का उद्देश्य क्या है?

  3. विजुअल स्टूडियो सी # के साथ MySQL कनेक्ट करना

  4. MySQL / MariaDB डेटाबेस के ऑटो इंक्रीमेंट वैल्यू को कैसे बदलें

  5. उनमें से कुछ को हटाने के बाद mysql तालिका पंक्ति आईडी में अंतराल को ठीक करना