python存储库模式实现
repka的Python项目详细描述
雷普卡
python存储库模式实现
安装
通过PIP:
pip install repka
通过诗歌:
poetry add repka
用法
fromtypingimportAnyimportsqlalchemyassafromaiopg.saimportcreate_enginefromrepka.apiimportBaseRepository,IdModel# Define SA tablemetadata=sa.MetaData()transactions_table=sa.Table("transactions",metadata,sa.Column("id",sa.Integer,primary_key=True,autoincrement=True),...)# Define pydantic modelclassTransaction(IdModel):...# Define repositoryclassTransactionRepo(BaseRepository):table=transactions_tabledefdeserialize(self,**kwargs:Any)->Transaction:returnTransaction(**kwargs)# Create SA connectionconnection_params=dict(user='aiopg',database='aiopg',host='127.0.0.1',password='passwd')asyncwithcreate_engine(**connection_params)asengine:asyncwithengine.acquire()asconn:# Instantiate repository repo=TransactionRepo(conn)# Now you can use the repo# Here we select first matching row from table and convert it to modeltransaction=awaitrepo.first(transactions_table.c.id==1)
测试
运行测试:
- 通过
DATABASE_URL
环境变量设置database url
警告:每次测试运行都将从数据库中删除所有表
- 通过
pytest
运行测试
贡献
为新功能/修复/任何内容创建分叉/分支
安装预提交挂钩:
pre-commit install
(对于手动预提交运行,请使用pre-commit run -a
)完成创建拉取请求并等待批准后