PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Melewati param ke DB .execute untuk WHERE IN... INT list

Sunting:Jika menurut Anda jawaban ini menghindari perlindungan bawaan terhadap serangan injeksi SQL, Anda salah; lihat lebih dekat.

Pengujian dengan pg8000 (antarmuka Pure-Python yang kompatibel dengan DB-API 2.0 ke mesin database PostgreSQL):

Ini adalah cara yang disarankan untuk meneruskan beberapa parameter ke klausa "IN".

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

Contoh lengkap:

>>> 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. Mendapatkan kesalahan:Otentikasi rekan gagal untuk postgres pengguna, ketika mencoba membuat pgsql bekerja dengan Rails

  2. Bisakah PostgreSQL mengindeks kolom array?

  3. Tabel Postgresql ada, tetapi mendapatkan relasi tidak ada saat melakukan kueri

  4. Menggabungkan (x,y) awan titik koordinat di PostgreSQL

  5. Gabungkan beberapa baris dalam array dengan SQL di PostgreSQL