Podle oficiální dokumentace:
Pokud potřebujete dynamicky generovat SQL dotaz (například dynamicky vybrat název tabulky ) můžete použít zařízení poskytované modulem psycopg2.sql.
sql
modul je nový ve verzi psycopg2 2.7. Má následující syntaxi:
from psycopg2 import sql
cur.execute(
sql.SQL("insert into {} values (%s, %s)")
.format(sql.Identifier('my_table')),
[10, 20])
Více na:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql
[Aktualizace 2017-03-24:AsIs
NEPOUŽÍVEJTE k reprezentaci názvů tabulek nebo polí, nový sql
místo toho je třeba použít modul:https://stackoverflow.com/a/42980069/5285608 ]
Také podle dokumentace psycopg2:
Upozornění :Nikdy, nikdy , NIKDY použijte zřetězení řetězců Pythonu (
+
) nebo interpolace řetězcových parametrů (%
) k předání proměnných do řetězce dotazu SQL. Ani se zbraní v ruce.