Heim >Datenbank >MySQL-Tutorial >Wie kann ich INSERT ... ON DUPLICATE KEY UPDATE in SQLAlchemy effizient durchführen?

Wie kann ich INSERT ... ON DUPLICATE KEY UPDATE in SQLAlchemy effizient durchführen?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 13:19:11368Durchsuche

How Can I Efficiently Perform INSERT ... ON DUPLICATE KEY UPDATE in SQLAlchemy?

Durchführen eines INSERT ... ON DUPLICATE KEY UPDATE in SQLAlchemy

SQLAlchemy bietet eine prägnante Methode zum Ausführen von INSERT ... ON DUPLICATE KEY UPDATE-Anweisungen.

Mit ON DUPLICATE KEY UPDATE im SQL-Statement

Zur direkten Einbindung der ON DUPLICATE KEY UPDATE-Klausel in das generierte SQL kann der @compiles-Dekorator eingesetzt werden. Es kann eine kompilierbare Funktion erstellt werden, um die gewünschte Zeichenfolge an die INSERT-Anweisung anzuhängen.

Innerhalb des ORM

Während SQLAlchemy ON DUPLICATE KEY UPDATE in seinem ORM nicht nativ unterstützt , stellt es die Funktion merge() bereit. Diese Funktion vergleicht den Primärschlüsselwert eines Objekts, um zu bestimmen, ob ein UPDATE oder ein INSERT durchgeführt werden sollte. Allerdings ist merge() auf Primärschlüssel beschränkt.

Alternative für Nicht-Primärschlüssel

Um die ON DUPLICATE KEY UPDATE-Funktionalität mit Nicht-Primärschlüsseln zu erreichen, ist eine benutzerdefinierte Option erforderlich Eine ähnliche Funktion wie get_or_create() von Django kann erstellt werden. Diese Funktion sucht nach einer vorhandenen Instanz in der Datenbank und gibt die gefundene Instanz zurück oder erstellt eine neue, wenn keine vorhanden ist.

Das obige ist der detaillierte Inhalt vonWie kann ich INSERT ... ON DUPLICATE KEY UPDATE in SQLAlchemy effizient durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn