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?