0

我只是尝试使用 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 语句中。

有人可以帮忙吗?

谢谢!

4

0 回答 0