sql >> Database teknologi >  >> RDS >> PostgreSQL

Sender param til DB .execute for WHERE IN... INT-listen

Rediger:Hvis du mener, at dette svar omgår den indbyggede beskyttelse mod SQL-injektionsangreb, tager du fejl; se nærmere.

Test med pg8000 (en DB-API 2.0-kompatibel Pure-Python-grænseflade til PostgreSQL-databasemotoren):

Dette er den anbefalede måde at overføre flere parametre til en "IN"-sætning.

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

Fuldstændig eksempel:

>>> 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. Postgres er den fedeste database – Årsag #1:Udviklere elsker det!

  2. Kommaseparerede værdier med SQL Query

  3. Logisk visning af datamodellen i R12.2

  4. Sådan installeres MariaDB på CentOS 8