Според официалната документация:
Ако трябва да генерирате динамично SQL заявка (например динамичен избор на име на таблица ) можете да използвате съоръженията, предоставени от модула psycopg2.sql.
sql
модулът е нов в psycopg2 версия 2.7. Той има следния синтаксис:
from psycopg2 import sql
cur.execute(
sql.SQL("insert into {} values (%s, %s)")
.format(sql.Identifier('my_table')),
[10, 20])
Повече на:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql
[Актуализация 2017-03-24:AsIs
НЕ трябва да се използва за представяне на имена на таблици или полета, новият sql
вместо това трябва да се използва модул:https://stackoverflow.com/a/42980069/5285608 ]
Също така, според документацията на psycopg2:
Предупреждение :Никога,никога , НИКОГА използвайте конкатенация на низове на Python (
+
) или интерполация на параметри на низ (%
) за предаване на променливи към низ на SQL заявка. Дори не под прицел.