sql >> Database >  >> RDS >> PostgreSQL

Param doorgeven aan DB .execute voor WHERE IN... INT list

Bewerken:als u denkt dat dit antwoord de ingebouwde beveiligingen tegen SQL-injectie-aanvallen omzeilt, heeft u het mis; kijk beter.

Testen met pg8000 (een DB-API 2.0-compatibele Pure-Python-interface naar de PostgreSQL-database-engine):

Dit is de aanbevolen manier om meerdere parameters door te geven aan een "IN"-clausule.

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

Volledig voorbeeld:

>>> 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. Flask by example - Postgres, SQLAlchemy en Alembic instellen

  2. Heroku Rails 4 kon geen verbinding maken met de server:verbinding geweigerd

  3. Ontdek welk valutasymbool uw sessie gebruikt in Oracle

  4. Hoe om te gaan met meerdere objecten met behulp van Object Explorer Detail Windows in SSMS - SQL Server / TSQL-zelfstudie, deel 22