Zgodnie z oficjalną dokumentacją:
Jeśli potrzebujesz dynamicznie wygenerować zapytanie SQL (na przykładwybierz dynamicznie nazwę tabeli ) możesz skorzystać z funkcji zapewnianych przez moduł psycopg2.sql.
sql
moduł jest nowy w psycopg2 w wersji 2.7. Ma następującą składnię:
from psycopg2 import sql
cur.execute(
sql.SQL("insert into {} values (%s, %s)")
.format(sql.Identifier('my_table')),
[10, 20])
Więcej na:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql
[Aktualizacja 2017-03-24:AsIs
NIE powinien być używany do reprezentowania nazw tabel lub pól, nowy sql
zamiast tego należy użyć modułu:https://stackoverflow.com/a/42980069/5285608 ]
Ponadto, zgodnie z dokumentacją psycopg2:
Ostrzeżenie :nigdy, nigdy , NIGDY użyj konkatenacji ciągów Pythona (+
) lub interpolacja parametrów ciągu (%
), aby przekazać zmienne do ciągu zapytania SQL. Nawet na muszce.