MySQL INSERT ... ON DUPLICATE KEY UPDATE com django 1.4 para inserção em massa

Estou tendo problemas para descobrir o MySQL INSERT ... ON DUPLICATE KEY UPDATE com o django 1.4.

A tabela que estou tentando inserir registros tem uma chave exclusiva de 2 colunas (composta). Os registros que estou recebendo são de uma fonte de terceiros e os valores serão alterados com o tempo, exceto nos campos que fazem o conjunto de chaves exclusivo. Estou recebendo de 1 a 5k registros por vez e precisaria

Atualmente eu estou usando Model.objects.bulk_create para inserir em massa, o desempenho é realmente surpreendente, pois emite geralmente uma consulta, não importa quão grande seja o conjunto de registros. No entanto, como meus registros podem mudar ao longo do tempo no final de terceiros, eu preciso executar a consulta MySQL INSERT ... ON DUPLICATE KEY UPDATE no conjunto de registros.

Estou planejando escrever instruções SQL brutas e executar usando algo como aqui:

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

Imaginando se existe uma solução melhor para o meu problema. Também como eu desinfetaria os valores de campo para inserção bruta?

questionAnswers(2)

yourAnswerToTheQuestion