psycopg2 - 插入整数数组

时间:2013-11-06 14:55:40

标签: psycopg2

我正在使用Postgres 9.2,Python 2.7.3,psycopg2 2.5.1。

我有一个表,其中一个字段被声明为'some_field int [] NOT NULL',我需要插入一些数据,所以我做的是这样的:

cursor.execute('INSERT INTO some_table (some_field) VALUES (%s)', ([1, 2, 3], ))

但意外地收到错误'DataError:missing“]”in arrays dimensions“,因为结果查询因为

INSERT INTO some_table (some_field) VALUES ('[1, 2, 3]')

而不是

INSERT INTO some_table (some_field) VALUES (ARRAY[1, 2, 3])

INSERT INTO some_table (some_field) VALUES ('{1, 2, 3}')

我错过了什么或是psycopg2错误吗?

1 个答案:

答案 0 :(得分:5)

第一段代码是正确的。要检查psycopg2生成的SQL,您始终可以使用mogrify()方法:

>>> curs.mogrify('INSERT INTO some_table (some_field) VALUES (%s)', ([1, 2, 3], ))
'INSERT INTO some_table (some_field) VALUES (ARRAY[1, 2, 3])'

然后,您可以使用psql尝试SQL并查找错误。如果您发现psycopg2生成的查询无法在psql中执行,请报告错误。