Ich benutze Python und sein MySQLdb-Modul, um einige Messdaten in eine MySQL-Datenbank zu importieren. Die Menge an Daten, die wir haben, ist ziemlich hoch (derzeit ca. 250 MB an CSV-Dateien und noch viel mehr).Python + MySQLdb Executemany
Derzeit verwende ich cursor.execute (...), um einige Metadaten zu importieren. Dies ist nicht problematisch, da es nur wenige Einträge für diese gibt.
Das Problem ist, dass wenn ich versuche, cursor.executemany() zu verwenden, größere Mengen der eigentlichen Messdaten zu importieren, MySQLdb ein
def __insert_values(self, values):
cursor = self.connection.cursor()
cursor.executemany("""
insert into values (ensg, value, sampleid)
values (%s, %s, %s)""", values)
cursor.close()
TypeError: not all arguments converted during string formatting
Mein aktueller Code ist anhebt, wo values
ist eine Liste von Tupeln mit jeweils drei Strings. Irgendwelche Ideen, was könnte daran falsch sein?
Edit:
Die Werte werden durch
yield (prefix + row['id'], row['value'], sample_id)
und dann in eine Liste eintausend zu einem Zeitpunkt gelesen, wo Zeile und Iterator aus Richtung csv.DictReader
.
Haben Sie verifiziert, dass Werte die richtigen Daten enthalten? Nebenbei sollten Sie mit LOAD LOCAL DATA INFILE suchen. Es kann viel schneller sein. –
Das Problem besteht darin, dass die Daten vorverarbeitet werden müssen (was derzeit im selben Python-Skript erfolgt), und es ist nicht sehr sinnvoll, redundante Kopien so großer Datensätze zu erstellen. Die Werte sollten in Ordnung sein, als ich das mit einem Debugger überprüft habe. – lhahne