Esempio n. 1
0
def in_transaction(connection_name: Optional[str] = None) -> "TransactionContext":
    """
    Transaction context manager.

    You can run your code inside ``async with in_transaction():`` statement to run it
    into one transaction. If error occurs transaction will rollback.

    :param connection_name: name of connection to run with, optional if you have only
                            one db connection
    """
    db_client = Tortoise.get_transaction_db_client(connection_name)
    return db_client.in_transaction()
Esempio n. 2
0
 def db(self) -> "BaseDBAsyncClient":
     try:
         from tortoise import Tortoise
         return Tortoise.get_transaction_db_client(self.connection_name)
     except KeyError:
         raise ConfigurationError("No DB associated to model")
Esempio n. 3
0
 async def wrapped(*args, **kwargs):
     db_client = Tortoise.get_transaction_db_client(connection_name)
     async with db_client.in_transaction():
         return await func(*args, **kwargs)