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)

测试

运行测试:

  1. 通过DATABASE_URL环境变量设置database url

警告:每次测试运行都将从数据库中删除所有表

  1. 通过pytest
  2. 运行测试

贡献

  1. 为新功能/修复/任何内容创建分叉/分支

  2. 安装预提交挂钩:pre-commit install(对于手动预提交运行,请使用pre-commit run -a

  3. 完成创建拉取请求并等待批准后

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中超类的构造函数中获取扩展泛型类的泛型类型?   java如何获取实体A的不同记录,该实体A与另一个实体B有一对多的关联,并按B记录的最新时间戳的最大值排序   JavaJSF导航参数依赖关系   具有短密文的java SecretKey匿名IBE   鼠标事件“找不到符号”错误的java解决方案   调用mediaplayer后使用java。停止我不能再发出声音了。为我解释开发参考?   java如何在序列化Avro消息时传递空值   java Sip Servlet未发送邀请请求   java根据规则访问节点,并删除链表中所有未访问的节点   Java 6上的jmockit测试用例必须使用Java代理吗?   JSF转换器f:convertDateTime是如何工作的?   java如何清除Firebase云数据库中的数组?   基于日期的列表java自定义排序   测量Java对象的内存消耗(完全“在应用程序中”)   故障终止/崩溃时的javafx Java(FX)故障保护警报?   java访问名称编码未知的文件   java如何在BlackBerry中绘制实心正方形?   java从JTextArea中删除边框   java可以使用另一个bean的属性来引用spring容器XML配置   数据透视表中具有相同列索引的java计数列