psycopg2: запись объектов JSON с помощью copy from. Как отформатировать строку json?
у меня есть таблица в 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 ответов
Я нашел одно решение, которое, кажется, работает сейчас:
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?