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

डीबी को परम पास करना .execute for WHERE IN... INT list

संपादित करें:अगर आपको लगता है कि यह उत्तर एसक्यूएल-इंजेक्शन हमले के खिलाफ अंतर्निहित सुरक्षा को रोकता है तो आप गलत हैं; अधिक बारीकी से देखें।

pg8000 के साथ परीक्षण (एक DB-API 2.0 संगत Pure-Python इंटरफ़ेस से PostgreSQL डेटाबेस इंजन):

यह एक "IN" क्लॉज में कई पैरामीटर पास करने का अनुशंसित तरीका है।

params = [3,2,1]
stmt = 'SELECT * FROM table WHERE id IN (%s)' % ','.join('%s' for i in params)
cursor.execute(stmt, params)

पूरा उदाहरण:

>>> from pg8000 import DBAPI
>>> conn = DBAPI.connect(user="a", database="d", host="localhost", password="p")
>>> c = conn.cursor()
>>> prms = [1,2,3]
>>> stmt = 'SELECT * FROM table WHERE id IN (%s)' % ','.join('%s' for i in prms)
>>> c.execute(stmt,prms)
>>> c.fetchall()
((1, u'myitem1'), (2, u'myitem2'), (3, u'myitem3'))


  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. PostgreSQL 9.0 . के साथ लोंडिस्ट प्रतिकृति

  3. विंडोज पीएसक्यूएल कमांड लाइन:क्या पासवर्ड रहित लॉगिन की अनुमति देने का कोई तरीका है?

  4. AWS S3 में PostgreSQL बैकअप विधि सुविधाएँ

  5. Postgres-XL 9.5 . की दिशा में कार्य करना