Ifølge den officielle dokumentation:
Hvis du har brug for at generere en SQL-forespørgsel dynamisk (f.eks. dynamisk vælge et tabelnavn ) kan du bruge de faciliteter, der leveres af psycopg2.sql-modulet.
sql
modul er nyt i psycopg2 version 2.7. Den har følgende syntaks:
from psycopg2 import sql
cur.execute(
sql.SQL("insert into {} values (%s, %s)")
.format(sql.Identifier('my_table')),
[10, 20])
Mere om:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql
[Opdatering 2017-03-24:AsIs
bør IKKE bruges til at repræsentere tabel- eller feltnavne, den nye sql
modul skal bruges i stedet:https://stackoverflow.com/a/42980069/5285608 ]
Også ifølge psycopg2 dokumentation:
Advarsel :Aldrig, aldrig , ALDRIG brug Python-strengsammenkædning (+
) eller interpolation af strengparametre (%
) for at sende variabler til en SQL-forespørgselsstreng. Ikke engang i gevær.