psycopg2:使用copy_from编写JSON对象。如何格式化json字符串?

时间:2014-11-11 22:29:04

标签: python json postgresql psycopg2

我在postgresql中有一个带有JSON类型列的表。我正在尝试将数据附加到表中。

cursor.execute("""INSERT INTO my_table VALUES(%s);""",(json.dumps(myobject))

一直像魅力一样工作。但现在我需要真正提高吞吐量。 这是不起作用的代码:

import StringIO,psycopg2,json

buffer = StringIO.StringIO(json.dumps(myobject))
cursor.copy_from(buffer,'my_table')
connection.commit()

写入缓冲区的json与copy_from不兼容。例如,'\'字符需要转义,因此'\ n'需要为'\\ n'。

如何将字符串写入缓冲区,以便copy_from将正确的json放入我的表中?

谢谢

1 个答案:

答案 0 :(得分:4)

我找到了一个似乎现在有效的解决方案:

import StringIO,psycopg2,json

json_to_write = json.dumps(myobject).replace('\\','\\\\')
buffer = StringIO.StringIO(json_to_write)
cursor.copy_from(buffer,'my_table')
connection.commit()

我不喜欢这个,因为我怎么知道没有其他问题? 也许我应该向psycopg2家伙提出功能请求?