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如何在sqlite数据库中保存特定列的历史记录   java如何更改/更新timeseriechart名称(JFreeChart)   java如何将整数转换为可绘制的   汇编什么解释Java的字节码   java查找已编译的类版本号   我应该什么时候在ColdFusion应用程序中使用Java?   java当一个实体的两个字段为(unique=true)时,如何处理JPA异常?   java为什么在所有其他实例都正确的情况下返回错误的布尔值?   java Hibernate每次都准备语句   java停留在平均字长上   对Java和日语字符进行编码   java如何将导致异常的方法的错误消息传递给侦听器中的onTestFailure方法   java代码没有打印结果   java为什么私有内部接口的方法必须是公共的?   休眠发生错误。有关详细信息,请参阅错误日志。JAVAlang.NullPointerException