2014-11-11 26 views
6

Tôi có một bảng trong postgresql với một cột kiểu JSON. Tôi đang cố gắng thêm dữ liệu vào bảng.psycopg2: Viết các đối tượng JSON bằng cách sử dụng copy_from. Làm thế nào để định dạng chuỗi json?

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

Đã hoạt động như một sự quyến rũ. Nhưng bây giờ tôi cần phải thực sự tăng thông lượng. Đây là mã mà không làm việc:

import StringIO,psycopg2,json 

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

Các json ghi vào bộ đệm không tương thích với copy_from. Ví dụ: ký tự '\' cần phải được thoát để '\ n' cần phải là '\\ n'.

Làm thế nào tôi có thể viết một chuỗi vào bộ đệm sao cho copy_from sẽ đặt chính xác json vào bảng của tôi?

Cảm ơn

Trả lời

2

Tôi tìm thấy một giải pháp mà dường như làm việc cho bây giờ:

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() 

tôi không yêu này vì làm thế nào để tôi biết không có vấn đề khác? Có lẽ tôi nên đưa ra yêu cầu tính năng đối với các chàng trai psycopg2?

Các vấn đề liên quan