MySQL INSERT… ON DUPLICATE KEY UPDATE mit Django 1.4 für Bulk Insert

Ich habe Probleme beim Herausfinden von MySQL INSERT ... ON DUPLICATE KEY UPDATE mit Django 1.4.

Die Tabelle, in die ich Datensätze einfügen möchte, hat einen eindeutigen Schlüssel mit zwei Spalten (zusammengesetzt). Die von mir empfangenen Datensätze stammen aus Quellen von Drittanbietern, und die Werte ändern sich im Laufe der Zeit mit Ausnahme der Felder, die den eindeutigen Schlüsselsatz festlegen. Ich erhalte 1 ~ 5k Datensätze gleichzeitig und müsste dies tun

Derzeit verwende ich Model.objects.bulk_create zum Masseneinfügen. Die Leistung ist wirklich erstaunlich, da im Allgemeinen eine Abfrage ausgegeben wird, unabhängig davon, wie groß der Datensatz ist. Da sich meine Datensätze jedoch im Lauf der Zeit auf Seiten von Drittanbietern ändern können, muss die Abfrage MySQL INSERT ... ON DUPLICATE KEY UPDATE für das Recordset ausgeführt werden.

Ich plane, rohe SQL-Anweisungen zu schreiben und mit etwas wie hier auszuführen:

sql = "MySQL INSERT ... ON DUPLICATE KEY UPDATE"

raw_insert(sql)

def raw_insert(sql):
    from django.db import connection, transaction
    cursor = connection.cursor()

    # Data modifying operation - commit required
    cursor.execute(sql)
    transaction.commit_unless_managed()

    return 1

Ich frage mich, ob es eine bessere Lösung für mein Problem gibt. Auch wie würde ich die Feldwerte für rohe Einfügung desinfizieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage