Selon la documentation officielle :
Si vous avez besoin de générer dynamiquement une requête SQL (par exemplechoisir dynamiquement un nom de table ) vous pouvez utiliser les fonctionnalités fournies par le module psycopg2.sql.
Le sql
Le module est nouveau dans la version 2.7 de psycopg2. Il a la syntaxe suivante :
from psycopg2 import sql
cur.execute(
sql.SQL("insert into {} values (%s, %s)")
.format(sql.Identifier('my_table')),
[10, 20])
Plus d'informations sur :http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql
[Mise à jour 2017-03-24 :AsIs
ne doit PAS être utilisé pour représenter des noms de table ou de champs, le nouveau sql
module doit être utilisé à la place :https://stackoverflow.com/a/42980069/5285608 ]
Aussi, selon la documentation de psycopg2 :
Avertissement :Jamais, jamais , JAMAIS utiliser la concaténation de chaînes Python (
+
) ou interpolation des paramètres de chaîne (%
) pour transmettre des variables à une chaîne de requête SQL. Pas même sous la menace d'une arme.