bulk_create with ignore_conflicts=True
insert new records only and doesn't update existing one.
bulk_update updates only existing records and doesn't insert new one.
Now I see only one variant to make upsert is a raw query:
from catalog.models import Product
with connection.cursor() as cursor:
cursor.executemany(
"""
INSERT INTO app_table (pk, col1, col2)
VALUES (%s, %s, %s)
ON DUPLICATE KEY UPDATE
col1 = VALUES(col1),
col2 = VALUES(col2);
""",
[
('1', 'val1', 'val2'),
('2', 'val1', 'val2'),
]
)
Is there another way to perform bulk upsert in Django?
bulk_size
, so it's a good decision – Intercurrent