Frage:
Kann SQLAlchemy Masseneinfügungen durchführen, ähnlich einer einzelnen SQL-Anweisung (INSERT INTO foo (bar) VALUES (1), (2), (3)), anstatt separate Einfügungen für auszuführen jedes Objekt?
Antwort:
SQLAlchemy Version 1.0.0 führte Massenoperationen ein, einschließlich Masseneinfügungen und -aktualisierungen.
Masseneinfügungen:
In Version 1.0.0 und höher unterstützt SQLAlchemy Masseneinfügungen mit die Methode bulk_save_objects():
s = Session() objects = [ User(name="u1"), User(name="u2"), User(name="u3") ] s.bulk_save_objects(objects) s.commit()
Dieser Code führt einen einzelnen Masseneinfügungsvorgang aus, um alle drei Benutzerobjekte hinzuzufügen.
Verbesserte Effizienz:
Die Verwendung von Masseneinfügungen verbessert die Leistung erheblich im Vergleich zur Ausführung separater Einfügungen für jede einzelne Einfügung Objekt.
Veraltete Daten und Transaktionen:
Um die Datenkonsistenz aufrechtzuerhalten, verwenden Sie Sitzungen mit autocommit=False. Wenn Sie eine Transaktion mithilfe von session.commit() manuell festschreiben, leert SQLAlchemy die geänderten Objekte und ruft die aktualisierten Datensätze bei nachfolgenden Abfragen ab. Allerdings können Datenbankänderungen aus externen Quellen immer noch Probleme mit veralteten Daten verursachen. Um dies abzumildern, sollten Sie die Verwendung von Datenbanksperren in Betracht ziehen, um die Transaktionskonsistenz zu erzwingen.
Das obige ist der detaillierte Inhalt vonWie kann SQLAlchemy optimierte Masseneinfügungen wie eine einzelne SQL-Anweisung anstelle einzelner Einfügungen erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!