Массовая вставка Python дает TypeError: не все аргументы, преобразованные во время форматирования строки

0

У меня есть следующий код для вставки нескольких строк;

cnx = pymysql.connect(host='xx', user='xx', password='xx', database='xx', autocommit=True)
cursor = cnx.cursor()
query = "INSERT INTO 'tableA'('id,'name',...)values(?,? ......)"
cursor.executemany(query, listTosave)

Мой списокTosave содержит такие значения, как;

[['AS0001', '1170', 1, '1', 'Unknown', 442, 1, datetime.datetime(2018, 5, 28, 23, 0), datetime.datetime(2018, 3, 15, 11, 15), datetime.datetime(2018, 3, 15, 10, 56), datetime.datetime(2018, 5, 28, 23, 18, 26), datetime.datetime(2018, 5, 28, 23, 59, 22), Decimal('15177.3184'), Decimal('15185.7562'), Decimal('8.4378')],[......],...
....]]

Когда я пытаюсь вставить, я получаю следующую ошибку;

    cursor.executemany(query, listTosave)
  File "/tmp/pymodules/pymysql/cursors.py", line 194, in executemany
  File "/tmp/pymodules/pymysql/cursors.py", line 194, in <genexpr>
  File "/tmp/pymodules/pymysql/cursors.py", line 163, in execute
  File "/tmp/pymodules/pymysql/cursors.py", line 142, in mogrify
TypeError: not all arguments converted during string formatting

Что я здесь делаю неправильно? Я хотел бы вставить несколько строк сразу.

  • 0
    Правильно ли query = "INSERT INTO 'tableA' ...... строки query = "INSERT INTO 'tableA' ...... ?
  • 0
    @ShivamSingh Мой запрос похож на // "INSERT INTO tableA ('id', ......) значения (?,?, ..)" Я считаю, что это правильно
Показать ещё 1 комментарий
Теги:
pymysql

1 ответ

1
Лучший ответ

listTosave должен быть списком кортежей, а не списком списков

[('AS0001', '1170', 1, '1', 'Unknown', 442, 1, datetime.datetime(2018, 5, 28, 23, 0), datetime.datetime(2018, 3, 15, 11, 15), datetime.datetime(2018, 3, 15, 10, 56), datetime.datetime(2018, 5, 28, 23, 18, 26), datetime.datetime(2018, 5, 28, 23, 59, 22), Decimal('15177.3184'), Decimal('15185.7562'), Decimal('8.4378')),(......),...]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню