我在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放入我的表中?
谢谢
答案 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家伙提出功能请求?