PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Подаване на param към DB .execute за списък WHERE IN... INT

Редактиране:Ако смятате, че този отговор заобикаля вградените защити срещу атака с SQL инжекция, грешите; погледнете по-внимателно.

Тестване с 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. Как да открием заявка, която държи заключването в Postgres?

  2. Използване на docker-compose за създаване на таблици в база данни на postgresql

  3. Изчислете следващия първичен ключ - на определен формат

  4. Как мога да получа psycopg2 регистриране на времето за изпълнение на заявка?

  5. SQL, Postgres OID, какви са те и защо са полезни?