2

我正在使用 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 array 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 错误?

4

1 回答 1

8

第一段代码是正确的。要检查 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])'

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

于 2013-11-06T15:24:34.030 回答