我正在尝试将数据插入表中。该表在程序的结构中确定,并始终保持不变。如何在执行多语句中插入表名,如下所示?
tbl = 'table_name'
rows = [{'this':x, 'that': x+1} for x in range(10)]
cur.executemany("""INSERT INTO %(tbl)s
VALUES(
%(this)s,
%(that)s
)""", rows)
答案 0 :(得分:0)
正如官方文档中所述:“只有查询值才能通过此方法绑定:它不应该用于将表或字段名称合并到查询中。如果需要动态生成SQL查询(例如选择)动态地表名)你可以使用psycopg2.sql模块提供的工具。“
它具有以下语法:
from psycopg2 import sql
tbl = 'table_name'
rows = [{'this':x, 'that': x+1} for x in range(10)]
cur.execute(
sql.SQL("INSERT INTO {} VALUES (%(this)s, %(that)s);"""")
.format(sql.Identifier(tbl)), rows)
更多关于http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql