Не все аргументы конвертируются во время форматирования строки (с использованием заполнителя «вопросительный знак» в Python cursor.execute) - PullRequest
0 голосов
/ 09 мая 2018

Я следовал рекомендациям, сделанным здесь и здесь , чтобы вставить записи в таблицу MySQL, но ошибка "не все аргументы, преобразованные во время форматирования строки" сохраняется.

import csv
import MySQLdb

//snip// # MySQL server login code

MyCSV = open('file.csv')
csv_data = csv.reader(MyCSV)

records = []
for row in csv_data:
    if "Request_Date" in row:
        # skip header row (field 1 header = 'Request_Date')
        continue
    else:
        records.append(tuple(row))

cursor.executemany('INSERT INTO SchemaName.TableName VALUES 
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', records)

MyDB.commit()
cursor.close()
MyDB.close()

Каждый кортеж в «записях» содержит 15 элементов, некоторые из которых не заполнены.

print (records [: 2]) генерирует ...

[('MM/DD/YYYY', 'first last', 'a-b/c', 'abcde-f', '', '', 'No', '', '', '', '', '', '', 'category-a', ''), ('MM/DD/YYYY', 'first last', 'e-f/g', 'abcde-f', '', '', 'No', '', '', '', '', '', '', 'category-b', '')]

Вот ошибка, которая возникает, когда запускается строка «cursor.executemany»:

  File "C:\Users\mburnett\AppData\Local\Programs\Python\Python36-32\lib\site-packages\MySQLdb\cursors.py", line 238, in execute
    query = query % args TypeError: not all arguments converted during string formatting

Во время обработки вышеуказанного исключения произошло другое исключение:

<<< ... >>>

  File "C:\Users\mburnett\AppData\Local\Programs\Python\Python36-32\lib\site-packages\MySQLdb\connections.py", line 52, in defaulterrorhandler
    raise errorclass(errorvalue)
_mysql_exceptions.ProgrammingError: not all arguments converted during string formatting

В ответе Кашьяпа (вторая ссылка) я заметил, что в его списке кортежей («покупок») перед последней скобкой стоит запятая. В моем списке кортежей нет запятой. Если эта последняя запятая необходима для того, чтобы это работало, каков лучший способ получить ее там?

Заранее спасибо!

под управлением Python 3.6.4 / Windows 10

...