Я использую Python и его модуль MySQLdb для импорта некоторых данных измерений в базу данных Mysql. Объем данных, которые у нас есть, довольно велик (в настоящее время около ~ 250 МБ CSV-файлов и еще много впереди).
В настоящее время я использую cursor.execute(...) для импорта некоторых метаданных. Это не проблематично, так как для них существует всего несколько записей.
Проблема в том, что когда я пытаюсь использовать cursor.executemany() для импорта большего количества фактических данных измерений, MySQLdb вызывает ошибку
TypeError: not all arguments converted during string formatting
Мой текущий код
def __insert_values(self, values):
cursor = self.connection.cursor()
cursor.executemany("""
insert into values (ensg, value, sampleid)
values (%s, %s, %s)""", values)
cursor.close()
где values
— список кортежей, каждый из которых содержит три строки. Любые идеи, что может быть не так с этим?
Изменить:
Значения генерируются
yield (prefix + row['id'], row['value'], sample_id)
а затем читать в список по одной тысяче за раз, где строка и итератор исходят из csv.DictReader
.