Transaction Mode

Any upsert operation is wrapped in a transaction to ensure atomicity and consistency.

This library supports two modes of transaction management:

  • Auto-managed transactions: The function creates and manages its own database connection and transaction.

  • User-managed transactions: The function operates within an existing connection and transaction provided by the caller.

Auto-Managed Transactions

The function creates and manages its own database connection and transaction.

This is the default mode when no connection/transaction parameters are provided. The entire operation is wrapped in a single transaction that automatically commits on success or rolls back on error.

Example:

# Auto-managed: function handles all transaction logic
upsert_operation(
    engine,
    table,
    values,
)

User-Managed Transactions

The function operates within an existing connection and transaction provided by the caller.

This allows the operation to be part of a larger transactional context. The caller is responsible for committing or rolling back the transaction.

Example:

# User-managed: operation is part of larger transaction
with engine.connect() as conn:
    with conn.begin() as trans:
        # Other database operations...

        # upsert operation
        upsert_operation(
            engine,
            table,
            values,
            conn=conn,
            trans=trans,
        )

        # More database operations...

        # Transaction committed/rolled back by user