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.