psycopg2 - 插入整数数组

3

我使用的是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的错误吗?

1个回答

9

第一段代码是正确的。要检查由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中无法执行,请报告错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接