SQLite и Python, TypeError: не все аргументы, преобразованные во время форматирования строки - PullRequest
0 голосов
/ 31 марта 2012

Я работаю над кодом, который вставляет строки CSV в базу данных SQLite, используя Python. Я использовал это некоторое время, и это работает. Однако произошло обновление файла CSV, но были добавлены только строки, а не столбцы. Теперь, когда я запускаю код, я получаю «Ошибка типа: не все аргументы, преобразованные во время форматирования строки». Я перепробовал все, что мог придумать и найти, и все еще получаю эту ошибку. Это код, который выполняет вставку части базы данных

fin = open("file.csv", "rb")
creader = csv.reader(fin, delimiter=',')

sql_insert = "INSERT INTO WR_Training VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"  

# Iterate through creader and insert the values into the table
# Pop off the 3 resources columns and insert the others 

    for row in creader:
        row.pop(27)
        row.pop(26)
        row.pop(25)
        if row[2] != "":
            cu.execute(sql_insert, row)

fin.close()
cx.commit()
cx.close()

Изначально все 29 столбцов вместе, поэтому я использую row.pop для удаления ненужных столбцов, поэтому я также не включаю их в исходное создание таблицы. Таким образом, он хранит 26 столбцов из 29. Я использовал% s вместо? для команды sql, однако% s не работает и сейчас? не работает так же.

Любые предложения будут очень полезны!

Спасибо

1 Ответ

1 голос
/ 05 апреля 2012
for row in creader:
    row = row[0:29]

    row.pop(27)
    row.pop(26)
    row.pop(25)
    if row[2] != "":
        cu.execute(sql_insert, row)

Это работает, благодаря комментарию XTL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...