Volgens de officiële documentatie:
Als u dynamisch een SQL-query moet genereren (bijvoorbeeld dynamisch een tabelnaam kiezen ) kunt u gebruikmaken van de faciliteiten van de psycopg2.sql-module.
De sql
module is nieuw in psycopg2 versie 2.7. Het heeft de volgende syntaxis:
from psycopg2 import sql
cur.execute(
sql.SQL("insert into {} values (%s, %s)")
.format(sql.Identifier('my_table')),
[10, 20])
Meer op:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql
[Update 2017-03-24:AsIs
mag NIET worden gebruikt om tabel- of veldnamen weer te geven, de nieuwe sql
module moet in plaats daarvan worden gebruikt:https://stackoverflow.com/a/42980069/5285608 ]
Ook volgens psycopg2-documentatie:
Waarschuwing :Nooit, nooit , NOOIT gebruik Python-tekenreeksaaneenschakeling (+
) of interpolatie van stringparameters (%
) om variabelen door te geven aan een SQL-querystring. Zelfs niet onder schot.