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()
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")
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)