[Python] Bulk upsert with Django

Discussão em 'Python' iniciado por Stack, Junho 4, 2025.

  1. Stack

    Stack Membro Participativo

    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?

    Continue reading...

Compartilhe esta Página