PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Passer le nom de la table en paramètre dans psycopg2

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.