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

डेटाबेस एपीआई:पायथन में बहु जहां स्थिति से कैसे निपटें?

आपको प्रत्येक मान के लिए SQL पैरामीटर का उपयोग करने की आवश्यकता है।

in के लिए कथन, इसका मतलब है कि आपको पैरामीटर उत्पन्न करने की आवश्यकता है:

sql = 'select * from tbl where params1=:params1 and params2=:params2 and params3 in ({})'.format(
    ', '.join(['params3_' + str(i) for i in range(len(params3_value))])

जहां मैं मानता हूं कि params3_value परीक्षण करने के लिए मानों की एक सूची है params3 के खिलाफ। अगर params3_value 3 तत्व हैं (जैसे ['v1', 'v2', 'v3'] ) तो जेनरेट किया गया SQL इस तरह दिखेगा:

select * from tbl where params1=:params1 and params2=:params2 and params3 in (:params3_0, :params3_1, :params3_2)

फिर उन पैरामीटर्स को cursor.execute() . पर पास करें कॉल करें:

params = {'params1': params1_value, 'params2': params2_value}
for i, val in enumerate(params3_value):
    params['params3_' + str(i)] = value
cursor.execute(sql, {params})

मैंने इस्तेमाल किया :name यहां SQL पैरामीटर शैली नाम दिया गया है जैसा कि cx_Oracle . है उपयोग करता है। सटीक समर्थित पैरामीटर शैलियों के लिए अपने डेटाबेस कनेक्टर दस्तावेज़ देखें।

:named नामित SQL पैरामीटर शैली के लिए आवश्यक है कि आप पैरामीटर में एक शब्दकोश के रूप में पास हों, इसलिए उपरोक्त कोड params3_value के लिए सही कुंजियाँ उत्पन्न करता है आइटम।




  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. कितनी भाषाओं में Null, कुछ भी नहीं के बराबर है, Null भी नहीं है?

  3. एक गुच्छा एसक्यूएल स्टेटमेंट से पार्स टेबल नाम

  4. पर्ल डीबीआई - एकाधिक कथनों के साथ SQL स्क्रिप्ट चलाएं

  5. Oracle DBMS_LOB के साथ समस्या का समाधान कैसे करें