Function to manually control your transaction.

    Returns transaction object with ``.rollback()`` and ``.commit()`` methods.
    All db calls in same coroutine context will run into transaction
    before ending transaction with above methods.

    :param connection_name: name of connection to run with, optional if you have only
                            one db connection

async def start_transaction(connection_name: Optional[str] = None) -> BaseTransactionWrapper:
    """
    Function to manually control your transaction.

    Returns transaction object with ``.rollback()`` and ``.commit()`` methods.
    All db calls in same coroutine context will run into transaction
    before ending transaction with above methods.

    :param connection_name: name of connection to run with, optional if you have only
                            one db connection
    """
    connection = _get_connection(connection_name)
    transaction = connection._in_transaction()
    await transaction.start()
    return transaction