trod是一个非常简单的基于asyncio的异步python orm
trod的Python项目详细描述
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())
要求
- Python3.6+
- asyncio