<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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