An extension for sqlalchemy
Project description
SQLAlchemy Transaction Context
An extension for sqlalchemy to store the session object in context and simplify the retrieval of the query result.
Create instance
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy_tx_context import SQLAlchemyTransactionContext
engine = create_async_engine(...)
db = SQLAlchemyTransactionContext(engine)
Execute query
SQLAlchemyTransactionContext
contains the following methods for creating queries with execution
through a context session:
select
insert
update
delete
union
union_all
exists
Query will use a session from the context.
async def some_repository_method():
await db.insert(...).values(...).execute()
async def some_function():
async with db.transaction() as tx:
await some_repository_method()
await tx.rollback() # Record will not be inserted
If there is no session in the context, a default session will be created to execute a single query.
async def some_repository_method():
await db.insert(...).values(...).execute()
async def some_function():
await some_repository_method()
Calling the transaction method inside the session will create a nested transaction.
async def some_function():
async with db.transaction() as tx1:
isinstance(tx1, AsyncSession) # True
async with db.transaction() as tx2:
isinstance(tx2, AsyncSessionTransaction) # True
Execute query with proxy methods
List of proxy methods added to the request object
Proxy methods for the AsyncSession
properties:
execute
scalar
scalars
Example:
value = await db.select(...).execute()
The same as:
async with async_sessionmaker(engine).begin() as tx:
result = await tx.execute(select(...))
Proxy methods for the Result
properties:
first
all
Example:
value = await db.select(...).first()
The same as:
async with async_sessionmaker(engine).begin() as tx:
result = await tx.execute(select(...))
value = result.first()
Proxy methods for the MappingResult
properties:
mapped_first
mapped_one
mapped_all
Example:
value = await db.select(...).mapped_first()
The same as:
async with async_sessionmaker(engine).begin() as tx:
result = await tx.execute(select(...))
value = result.mappings().first()
Proxy method for the CursorResult
:
rowcount
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sqlalchemy_tx_context-0.2.1.tar.gz
.
File metadata
- Download URL: sqlalchemy_tx_context-0.2.1.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a567272f30a40105ab0683f98c9c43cd8d3dc11a10d9b7c3e582f29bf7596042 |
|
MD5 | f43886d7a6e47769b088d5d9b9a178a9 |
|
BLAKE2b-256 | 4a02b781a95234446dfbedb9f2cc01bdab1165cf278610617e638b7c3912a097 |
File details
Details for the file sqlalchemy_tx_context-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: sqlalchemy_tx_context-0.2.1-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b110550c467b7e84ba69b2fe8a00d855fe115c0df5b894b206e3482b9cdb170 |
|
MD5 | 91a3d2ba19da51aca9ceee2df1ae45be |
|
BLAKE2b-256 | b0ee27a1bff28aa7408d534fea36c3c911ef84a2f1387244331a7c9ef8bf6b1d |