Gemäß der offiziellen Dokumentation:
Wenn Sie eine SQL-Abfrage dynamisch generieren müssen (zum Beispiel durch dynamisches Auswählen eines Tabellennamens ) können Sie die Möglichkeiten des Moduls psycopg2.sql nutzen.
Die sql
Modul ist neu in psycopg2 Version 2.7. Es hat die folgende Syntax:
from psycopg2 import sql
cur.execute(
sql.SQL("insert into {} values (%s, %s)")
.format(sql.Identifier('my_table')),
[10, 20])
Mehr unter:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql
[Aktualisierung 2017-03-24:AsIs
sollte NICHT verwendet werden, um Tabellen- oder Feldnamen darzustellen, das neue sql
Modul sollte stattdessen verwendet werden:https://stackoverflow.com/a/42980069/5285608 ]
Auch laut psycopg2-Dokumentation:
Warnung :Nie, nie , NIEMALS Verwenden Sie die Python-String-Verkettung (+
) oder Stringparameter-Interpolation (%
), um Variablen an eine SQL-Abfragezeichenfolge zu übergeben. Nicht einmal mit vorgehaltener Waffe.