一个简单的orm支持异步,aiopeewee的fork

aioorm的Python项目详细描述



torpeewee之后建模的peewee的异步接口

功能

  • 支持mysql和postgresql
  • 使用数据库URL的数据库工厂
  • 使用peewee的字段
  • manytomanyfield支持
  • 快捷方式支持
  • CSV转储/加载支持
  • 可以使用playhose.postgres_ext.jsonfield

安装

  • python -m pip install aioorm

示例:grud

fromaioormimportAioModel,AioMySQLDatabasefrompeeweeimportCharField,TextField,DateTimeFieldfrompeeweeimportForeignKeyField,PrimaryKeyFielddb=AioMySQLDatabase('test',host='127.0.0.1',port=3306,user='root',password='')classUser(AioModel):username=CharField()classMeta:database=dbclassBlog(AioModel):user=ForeignKeyField(User)title=CharField(max_length=25)content=TextField(default='')pub_date=DateTimeField(null=True)pk=PrimaryKeyField()classMeta:database=db# create connection poolawaitdb.connect(loop)# countawaitUser.select().count()# async iteration on select queryasyncforuserinUser.select():print(user)# fetch all records as a list from a query in one passusers=awaitUser.select()# insertuser=awaitUser.create(username='kszucs')# modifyuser.username='krisztian'awaituser.save()# async iteration on blog set[b.titleasyncforbinuser.blog_set.order_by(Blog.title)]# close connection poolawaitdb.close()# see more in the tests

示例:多对多

注意,必须使用aiomanytomanyfield而不是manytomy。

fromaioormimportAioManyToManyFieldclassUser(AioModel):username=CharField(unique=True)classMeta:database=dbclassNote(AioModel):text=TextField()users=AioManyToManyField(User)classMeta:database=dbNoteUserThrough=Note.users.get_through_model()asyncforuserinnote.users:# do something with the users

目前,我所知道的实例关系的immidiate设置的唯一限制必须替换为方法调用:

# original, which is not supportedcharlie.notes=[n2,n3]# use insteadawaitcharlie.notes.set([n2,n3])

序列化

转换为dict需要异步版本的model-to-dict

fromaioormimportmodel_to_dictserialized=awaitmodel_to_dict(user)

转储到csv

表可以转储到csv文件。

fromaioorm.utilsimportaiodump_csvquery=User.select().order_by(User_csv.id)awaitaiodump_csv(query,str(filepath))

待办事项

  • 异步数据集支持
  • 更多测试

限制

  • 未经测试的交易
  • 仅支持MySQL和PostgreSQL

错误修复

  • 修正了get和get或create的错误

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

推荐PyPI第三方库


热门话题
内存Java正在运行。jar heapdump错误   java如何在安卓画布中弯曲文本区域?   java如何在Gdx 安卓游戏编程中获得矩形的真实触碰位置?   找不到java Spring MVC控制器   在Java中使用双重检查锁定单例扩展类   java在高效的时间和内存中动态执行insert(索引、数据)、delete(索引)、getAt(索引)操作。   java 安卓 Toast和视图帮助   java协议缓冲区:从文件中读取所有序列化消息   java如何在Jackson中为参数化接口类型执行通用自定义反序列化程序   与简单的空检查相比,使用(平面)映射的java优势是什么?   异步方法seam中的java Get contextparam   jar使用相同的java运行时运行另一个java程序   java访问Spring批处理中的作业参数   java给定字符串为空或null   在h2数据库1.4中找不到java类“org.h2.fulltext.FullTextLucene”。*不适用于Lucene Core 4*   java Spring Boot在使用@enableSync时不响应任何请求   java错误:在bash上找不到或加载主类pj2   “返回对象”和“返回(对象)”之间的Java差异   java Android开发:如何使用onKeyUp?