我正在使用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错误吗?
答案 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
中执行,请报告错误。