没有项目描述

pulsar-odm的Python项目详细描述


Badges:licensepyversionsstatuspypiversion
Master CI:traviscoverage
Downloads:http://pypi.python.org/pypi/pulsar-odm
Source:https://github.com/quantmind/pulsar-odm
Mailing list:google user group
Design by:Quantmind and Luca Sbardella
Platforms:Linux, OSX, Windows. Python 3.5 and above
Keywords:sql, sqlalchemy, asynchronous, asyncio, concurrency, greenlet

脉冲星odm是建立在pulsarsqlalchemygreenlet库之上的 提供隐式异步对象数据映射器,用于编写代码 用asyncio。 目前只实现并测试了一种方言:

Usage

为了能够在标准块代码中使用对象数据映射器, 需要使用pulsar GreenPool作为以下片段的亮点:

fromdatetimeimportdatetimefromsqlalchemyimportInteger,Column,String,DateTime,Booleanfrompulsar.apps.greenioimportGreenPoolimportodmclassTask(odm.Model):id=Column(Integer,primary_key=True)subject=Column(String(250))done=Column(Boolean,default=False)created=Column(DateTime,default=datetime.utcnow)def__str__(self):return'%d: %s'%(self.id,self.subject)defexample(mp):# Make sure table is availablemp.table_create()# Insert a new Task in the tablewithmp.begin()assession:task=mp.task(subject='my task')session.add(task)returntaskif__name__=='__main__':pool=GreenPool()mp=odm.Mapper('postgresql+green://odm:odmtest@127.0.0.1:5432/odmtests')mp.register(Task)task=pool._loop.run_until_complete(pool.submit(example,mp))print(task)

example函数是在主函数以外的一个greenlet中执行的。这一点很重要,否则呼叫将失败:

>>example(mp)>>Traceback(mostrecentcalllast):...RuntimeError:acquireinmaingreenlet

在greenlet池上运行该函数可以保证正确的异步执行。当psycopg2 对子greenlet上的数据库执行命令,它将控制切换到父(主)greenlet,后者由asyncio eventloop控制,以便可以执行其他异步操作。 一旦执行结果就绪,执行就会切换回原始的子greenlet,以便example函数可以继续。

Testing

要运行测试,请为postgresql创建一个新角色和数据库:

psql -a -f tests/db.sql

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

推荐PyPI第三方库


热门话题
spring如何在java中将MimerReader的内容转换成字符串?   api为什么Java Map<K,V>为get和remove方法使用非类型化参数?   linux youtubedl从终端下载,但从java程序停止(同一命令)   java为webapp创建jar   根据控制代码质量的工具,JavaSpringbean不是线程安全的   git使用Java的gitlab API连接到gitlab   Hibernate标准中按嵌套属性(三级)的java排序   java Apache嵌入式derby TIMESTAMPDIFF函数在节光后额外返回1小时   java拒绝执行异常   java EditText可选择缩放   java ArrayIndexOutOfBoundsException在尝试通过反射访问内部类构造函数的参数注释时发生异常   java JMF大文件(2GB)无“movi”块错误   高效实现Java本机接口网络摄像头提要的性能   java显示shell排序过程   java静态空类   java如何检查反向比较器和原始比较器的相等性?   java从服务更新文本视图的最简单方法是什么?   java JTextField希望在我尝试使用时成为最终版本。getText()