trod是一个非常简单的基于asyncio的异步python orm

trod的Python项目详细描述


https://img.shields.io/pypi/v/trod.svghttps://travis-ci.org/acthse/trod.svg?branch=masterhttps://codecov.io/gh/acthse/trod/branch/master/graph/badge.svghttps://img.shields.io/pypi/pyversions/trod.svghttps://img.shields.io/pypi/l/trod.svg

trod是一个非常简单的基于asyncio的异步python orm。 现在它只支持mysql,并使用aiomysql作为数据库的访问“驱动程序”。

  • 严格来说,trod不是orm,它只是在orm模式下工作。 trod中的对象与数据库中的数据完全隔离。 它只是内存中的一个python对象,更改它不会影响数据库。 必须显式执行对数据库的提交请求。
  • trod只使用模型和对象api来编写sql语句并提交 在执行时将它们发送到数据库。加载时,将检索数据 然后打包成对象。

关于

《特洛德》(那是我)的作者是一个初级的Python,特洛德有很多临时的 解决方案优化并继续添加新功能,这只是的开始。 稍后我将继续,欢迎您的问题和请求。

安装

pip install trod

基本示例

importasynciofromtrodimportTrod,And,Autofromtrod.typesimportfield,indexdb=Trod()classUser(db.Model):__table__='user'__comment__='user info'id=field.Bigint(length=20,unsigned=True,primary_key=True,comment='primary key')name=field.String(length=20,use_varchar=True,allow_null=False,comment='user name')password=field.String(length=45,use_varchar=True,comment='password')date=field.Datetime(comment='registration time')created_at=field.Timestamp(auto=Auto.on_create)updated_at=field.Timestamp(auto=Auto.on_update)name_idx=index.Key(column='name')asyncshow_case():""" show some base case """awaitdb.bind('mysql://user:password@host:port/db')# create_tableawaitUser.create()# add a useruser=User(id=1,name='name',password='123456')user_id=awaitUser.add(user)print(user_id)# 1# get a user by iduser=awaitUser.get(user_id)print(user.password)# 123456# update user passwordawaitUser.update(dict(password=654321),User.name==user.name)user=awaitUser.get(user_id)print(user.password)# 654321# delete a userawaitUser.remove(User.id==user.id)# queryusers=[User(id=2,name='zs',password='222222')User(id=3,name='ls',password='333333')]awaitUser.batch_add(users)query_users=awaitUser.query().filter(User.id.in_([1,2,3])).order_by(User.data).all()print(query_users)# [<User(table 'user' : user info)>, <User(table 'user' : user info)>, <User(table 'user' : user info)>]user=awaitUser.query(User.password,User.name).filter(And(User.id.in_([1,2,3],User.name=='ls'))).first()print(user.password)# 333333awaitdb.unbind()asyncio.get_event_loop().run_until_complete(show_case())

要求

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

推荐PyPI第三方库


热门话题
java如何在Spring Boot 2.2.0中添加弹性搜索?   jakarta ee如何在没有java认证的情况下停止直接访问网页(自定义标记)   java Hibernate:使用executeUpdate()的批删除未清除一级缓存   java如何在Hibernate中插入外键定义为Long的实体?   带参数的java Mockito单元测试计算器方法   java如何从Rally Rest API读取集合属性   java如何对基于消息的处理执行集成测试?   带插入排序的java排序字符串数组标记,双链表   java为什么在基于注释的Spring app@Value默认值中解析为null?   java Apache Commons Http客户端注册特定于客户端的协议   如何使用java反转字符串中n个部分的n个字符   java Tomcat在本地主机上运行良好,但在部署时出现内部服务器错误   使用信号量的变量的java结果   Java编译/运行时类路径问题   java哪个提供商负责AES/CTR/NOP添加?   伪错误解码器中的java响应未获取Zalando问题自定义属性