Also habe ich ein Python-Skript, das ungefähr 350.000 Datenobjekte durchläuft, und abhängig von einigen Tests muss es eine Zeile aktualisieren, die jedes dieser Objekte in einer MySQl-Datenbank darstellt. Ich benutze auch pymysql, da ich die geringsten Probleme damit hatte, vor allem, wenn große Select-Abfragen gesendet werden (Select-Anweisungen mit where column IN (....)
-Klausel, die mehr als 100.000 Werte enthalten kann).PyMySQL verschiedene Updates in einer Abfrage?
Da jedes Update für jede Zeile unterschiedlich sein kann, ist jede Update-Anweisung anders. Beispielsweise möchten wir für eine Zeile möglicherweise first_name
aktualisieren, aber für eine andere Zeile möchten wir first_name
unverändert lassen und wir möchten last_name
aktualisieren.
Deshalb möchte ich nicht die cursor.executemany()
Methode verwenden, die eine generische update-Anweisung und Sie füttert es die Werte wie ich bereits erwähnt, jedes Update ist anders, so dass eine generische update-Anweisung nicht wirklich arbeite für meinen Fall. Ich möchte auch nicht über 350.000 Update-Anweisungen einzeln über die Leitung senden. Kann ich sowieso alle meine Update-Anweisungen zusammenpacken und sie sofort senden?
Ich habe versucht, sie alle in einer Abfrage und mit der cursor.execute()
-Methode, aber es scheint nicht alle Zeilen zu aktualisieren.
Wie viele verschiedene Arten Updates gibt es? d. h. wie viele verschiedene Tabellen aktualisieren Sie mit diesen Dritteln einer Million Werte? und wie viele verschiedene Spalten auf diesen Tabellen? Ist es nur ein paar verschiedene Update-Anweisungen? –
Gibt es andere nützliche Optionen als "eine Abfrage" oder "ein Drittel von Millionen" Abfragen? Wie wäre es, wenn die Daten in eine 'Arbeitstabelle' in der Datenbank geladen würden und diese dann manipulieren würden? Datenbank wie mit Daten in Tabellen zu spielen? –
@RyanVincent alle aktualisieren nur die gleiche Tabelle aber die Tabelle hat 12 Spalten und jede Update-Anweisung kann jede andere Kombination von Spalten auf einmal aktualisieren, von 1 Spalte bis 10 Spalten. –