Я пытаюсь вставить большое количество строк в Postgres, используя cursor.mogrify используя эти данные psycopg2: insert multiple rows with one queryВставка строк в БД из списка кортежей с помощью cursor.mogrify дает ошибка
является список кортежей, где каждый кортеж строку, которую необходимо вставить.
cursor = conn.cursor()
args_str = ','.join(cursor.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s)", x) for x in data)
cursor.execute(
"insert into table1 (n, p, r, c, date, p1, a, id) values " + args_str)`
но получаю ошибку:
TypeError: sequence item 0: expected str instance, bytes found
в строке:.
args_str = ','.join(cursor.mogrify("(%s,%s,%s,%s,%s,%s,%s,%s)", x) for x in data)
Если я пытаюсь изменить к б '' присоединиться (cursor.mogrify ("(% s, % s,% s,% s,% s,% s,% s,% s) ", x) для x в данных), затем выполнить запрос дает ошибку для вставки байта ....
Я что-то не так?
Для вставки большого количества строк может быть полезно использовать копию. –
@RomanTkachuk Согласитесь, что COPY во много раз быстрее этого .., но иногда запись в файл не является вариантом или даже если иногда копировать файл на сервер нет. – MANU
Вы можете КОПИРОВАТЬ ОТ STDIN. Без записи в файл. –