WSTAW MySQL… W DUPLIKOWANEJ AKTUALIZACJI KLUCZA z django 1.4 dla wstawiania zbiorczego
Mam problemy z wykrywaniem MySQL INSERT ... W DUPLICATE KEY UPDATE z django 1.4.
Tabela, którą próbuję wstawić, ma 2-kolumnowy (złożony) unikalny klucz. Rekordy, które otrzymuję, pochodzą z zewnętrznego źródła, a wartości zmieniają się w czasie, z wyjątkiem tych pól, które tworzą unikalny zestaw kluczy. Odbieram od jednego do pięciu rekordów jednocześnie i musiałbym
Obecnie używam Model.objects.bulk_create do wstawiania zbiorczego, wydajność jest naprawdę niesamowita, ponieważ generalnie generuje jedno zapytanie bez względu na to, jak duży jest zestaw rekordów. Jednakże, ponieważ moje rekordy mogą zmieniać się z czasem na końcu strony trzeciej, muszę wykonać zapytanie MySQL INSERT ... W DUPLICATE KEY UPDATE na zestawie rekordów.
Planuję napisać surowe instrukcje SQL i wykonać coś takiego:
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
Zastanawiam się, czy istnieje lepsze rozwiązanie mojego problemu. W jaki sposób miałbym oczyścić wartości pola dla wkładki surowej?