sql >> Base de Datos >  >> RDS >> PostgreSQL

Pasar el nombre de la tabla como parámetro en psycopg2

Según la documentación oficial:

Si necesita generar dinámicamente una consulta SQL (por ejemplo, elegir dinámicamente un nombre de tabla ) puede usar las facilidades provistas por el módulo psycopg2.sql.

El sql módulo es nuevo en psycopg2 versión 2.7. Tiene la siguiente sintaxis:

from psycopg2 import sql

cur.execute(
    sql.SQL("insert into {} values (%s, %s)")
        .format(sql.Identifier('my_table')),
    [10, 20])

Más en:http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql

[Actualización 2017-03-24:AsIs NO debe usarse para representar nombres de tablas o campos, el nuevo sql se debe usar el módulo en su lugar:https://stackoverflow.com/a/42980069/5285608 ]

Además, según la documentación de psycopg2:

Advertencia :Nunca, nunca , NUNCA use la concatenación de cadenas de Python (+ ) o interpolación de parámetros de cadena (% ) para pasar variables a una cadena de consulta SQL. Ni siquiera a punta de pistola.