PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Übergeben des Tabellennamens als Parameter in psycopg2

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.