Я пытаюсь использовать psycopg2 для вставки строки в таблицу из списка python, но возникают проблемы с форматированием строки.psycopg2 не все аргументы, преобразованные во время форматирования строки
Таблица имеет 4 столбца типов (1043-varchar, 1114-timestamp, 1043-varchar, 23-int4). Я также делал попытки с 1082-date вместо метки времени и 21-int2 вместо int4.
следующее заявление отлично работает в pgAdmin или через psycopg2 исполнения курсора без строки форматирования:
INSERT INTO ssurgo.distmd VALUES ('5', '2015-01-01', 'Successful', 4891);
Однако, если я:
sql_text = "INSERT INTO ssurgo.distmd VALUES %s ;"
data = ['5', '2015-01-01', 'Successful', 4891]
data[1] = date.today() # ensure psycopg2 recognizes a date using datetime
print(curs.mogrify(sql_text, data))
я получаю:
TypeError: not all arguments converted during string formatting
Я получаю ту же ошибку, если я сохраню дату как строку «2015-01-01» вместо datetime.date obje ct, и если я использую curs.execute (sql_text, data), а не mogrify.
Я передаю список, поэтому я не думаю, что это связано с более распространенной ошибкой одного кортежа, которую я нашел в других вопросах, которые необходимы для создания нестрочной последовательности, и явное преобразование в кортеж не исправить ошибку.
Кто-нибудь знает, почему форматирование строки psycopg2 дает ошибку?
У вас есть только один заполнитель для четырех значений. – Keith