transactional management using sqlalchemy
Project description
Transactional-SQLAlchemy
개요
지원하는 트랜잭션 전파 방식
참조: Transaction Propagation of Spring framework
REQUIRED: 이미 트랜잭션이 열린경우 기존의 세션을 사용하거나, 새로운 트랜잭션을 생성REQUIRES_NEW: 기존 트랜잭션을 무시하고 새롭게 생성NESTED: 기존 트랜잭션의 자식 트랜잭션을 생성
기능
트랜잭션 전파 방식 관리
Auto commit or Rollback (트랜잭션 사용 시)
auto session
동기/비동기 함수 모두 지원
사용법
1. transactional + auto session
- 패키지 설치
- ver. sync
pip install transactional-sqlalchemy
- ver. async
pip install transactional-sqlalchemy[async]
- 세션 핸들러 초기화
from transactional_sqlalchemy import init_manager
from sqlalchemy.ext.asyncio import async_scoped_session
async_scoped_session_ = async_scoped_session(
async_session_factory, scopefunc=asyncio.current_task
)
init_manager(async_scoped_session_)
- ITransactionalRepository를 상속하는 클래스 작성
- repository 레이어의 클래스 작성시, ITransactionalRepository를 상속
session이라는 이름의 변수가 있는경우 만들어 두었던 세션을 할당
from transactional_sqlalchemy import ITransactionalRepository, transactional
class PostRepository(ITransactionalRepository):
@transactional # or @transactional(propagation=Propagation.REQUIRES)
async def requires(self, post: Post, session: AsyncSession) -> None:
session.add(post)
...
@transactional(propagation=Propagation.REQUIRES_NEW)
async def requires_new(self, post: Post, session: AsyncSession) -> None: ...
@transactional(propagation=Propagation.NESTED)
async def nested(self, post: Post, session: AsyncSession) -> None: ...
async def auto_session_allocate(self, session:AsyncSession) -> None: ...
2. auto session without transactional
from transactional_sqlalchemy import ISessionRepository
class PostRepository(ISessionRepository):
async def create(self, post: Post, *, session: AsyncSession = None) -> None: ...
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file transactional_sqlalchemy-0.1.0.tar.gz.
File metadata
- Download URL: transactional_sqlalchemy-0.1.0.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f5b8f3a135cf7736f939440bf4296fb2f40f60c54e29d81ec0fd8ee5ca4b1fc
|
|
| MD5 |
42b3ee34df409ba3ba6fb081bf4056cc
|
|
| BLAKE2b-256 |
8b2e1ed1504e09f7ce5b249e31adbfba9334b31fb4d59dd34c470fc7956e96f0
|
File details
Details for the file transactional_sqlalchemy-0.1.0-py3-none-any.whl.
File metadata
- Download URL: transactional_sqlalchemy-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
048814048cb4f33946cb37a988373bddfefc1c9909b4fa06cf54367fcca8e38d
|
|
| MD5 |
4082f42e928dda44139563eadf0858b6
|
|
| BLAKE2b-256 |
a8fb3ba10d1803919bd94eaf0bd38b16aeefd6f203f6941feab21c3e0927a964
|