PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Passaggio del nome della tabella come parametro in psycopg2

Secondo la documentazione ufficiale:

Se devi generare dinamicamente una query SQL (ad esempio, scegliendo dinamicamente il nome di una tabella ) puoi utilizzare i servizi forniti dal modulo psycopg2.sql.

Il sql il modulo è nuovo in psycopg2 versione 2.7. Ha la seguente sintassi:

from psycopg2 import sql

cur.execute(
    sql.SQL("insert into {} values (%s, %s)")
        .format(sql.Identifier('my_table')),
    [10, 20])

Altro su:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql

[Aggiornamento 24-03-2017:AsIs NON deve essere utilizzato per rappresentare nomi di tabelle o campi, il nuovo sql utilizzare invece il modulo:https://stackoverflow.com/a/42980069/5285608 ]

Inoltre, secondo la documentazione di psycopg2:

Avviso :Mai, mai , MAI usa la concatenazione di stringhe Python (+ ) o interpolazione di parametri stringa (% ) per passare variabili a una stringa di query SQL. Nemmeno sotto tiro.