Здесь есть разные проблемы. Во-первых, ваш синтаксис неверен: вы не должны заключать в кавычки символы ?
, поэтому, по крайней мере, ваш запрос должен быть:
cursor.execute('''INSERT into mal (?,?,?,?,?,?,?,?,?)''',(row_list[z][0],row_list[z][1],row_list[z][2],row_list[z][3],row_list[z][4],row_list[z][5],row_list[z][6],row_list[z][7],row_list[z][8]))
Хуже, в некоторых строках нет 9 элементов (в первом нет ни одного, а другой имеет только 8), так что вы должны проверить это. Наконец, лучше использовать executemany
, который повторяет цикл по execute
, потому что запрос компилируется только один раз. Поэтому я хотел бы предложить:
cursor.executemany('''INSERT into mal values(?,?,?,?,?,?,?,?,?)''',
[row for row in row_list if len(row) == 9])
Наконец, вы не должны использовать атрибут PRIMARY KEY
для столбца virus
, потому что список фактически содержит дубликат для 'Jerusalem\n'
, тогда как первичный ключ должен быть уникальный.