我只是尝试使用 Python Psycopg2 模块的 executeValues 函数将新行插入到现有 Postgres 数据库中。我使用它是因为将来我需要进行批量插入,但现在我只测试一行。
这是代码:
import psycopg2
from psycopg2.extras import *
# Connect to database
try:
conn = psycopg2.connect("dbname='test' user='postgres' host='localhost' password='serengeti'")
conn.autocommit = True
except:
print "I am unable to connect to the database"
cur = conn.cursor()
SQL = "INSERT INTO sample (id,name) VALUES %s"
valuesList = []
valuesList.append((5,'wolf'))
**The problem appears to be here somewhere**
valuesList.append(('(SELECT id FROM city WHERE name =''Boston'')','tiger'))
execute_values(cur,SQL,valuesList,template=None, page_size=1000000)
我得到的错误如下图所示:
'Sample' 是要插入的表。它包含两个字段:“id”(整数)和“名称”(文本)。'City' 是同一数据库中的另一个表,其中包含一个 'id'(整数)和 'name' 字段(文本),其中 name = 'Boston' 的行已被填充。
我相信错误出现在 valuesList 中的 SELECT 语句中。
有人可以帮忙吗?
谢谢!