文档章节

ponyorm使用ultramysql(在gevent中使用ponyorm)

flyking
 flyking
发布于 2014/10/27 10:09
字数 250
阅读 110
收藏 0

1.安装ultramysql

pip install git+https://github.com/esnme/ultramysql.git

2.安装ultramysql的MySQLdb包装库(patch掉ultramysql,来兼容MySQLdb特征)

    包装以后,就不需要安装MySQLdb了, 用到MySQLdb的地方相当于使用ultramysql,从而可以在gevent使用ponyorm了

pip install git+https://github.com/hongqn/umysqldb.git

3.安装ponyorm

pip install git+https://github.com/ponyorm/pony.git

测试

# -*- coding: utf-8 -*-


from gevent import monkey; monkey.patch_all()
from pony import orm
import gevent


DB = dict(host="127.0.0.1", 
          user="root", 
          passwd="123456", 
          db="test", 
          )

db = orm.Database("mysql", **DB)


class Person(db.Entity):
    _table_ = "person"
    
    name = orm.Required(unicode)
    age = orm.Required(int)
    motto = orm.Optional(unicode)
    cars = orm.Set("Car")


class Car(db.Entity):
    _table_ = "car"
    
    owner = orm.Required(Person)
    model = orm.Required(unicode) 
    

# orm.sql_debug(True)
db.generate_mapping(create_tables=False)

def test_insert1():
    print "test_insert1 start.."
    with orm.db_session:
        p1 = Person(name="fk", age=24)
        car1 = Car(owner=p1, model="Lexus")
    print "test_insert1 end.."

def test_insert2():
    print "test_insert2 start.."
    with orm.db_session:
        p1 = Person(name="gp", age=24)
        car1 = Car(owner=p1, model="Lexus")
    print "test_insert2 end.."

gevent.spawn(test_insert1)
gevent.spawn(test_insert2)
print "main coroutine.."

gevent.wait()


__all__ = ["Person", "Car", "db"]

result:

main coroutine..
test_insert1 start..
test_insert2 start..
test_insert1 end..
test_insert2 end..

根据log顺序可知, ponyorm已经可以在gevent中阻塞就切换协程了

© 著作权归作者所有

下一篇: 切片分组
flyking
粉丝 64
博文 218
码字总数 75579
作品 0
东城
程序员
私信 提问
gevent mysql驱动 [ultramysql]

2014-7-13记: 废除umysqldb, 不再使用, 直接使用umysql(ultramysql) github上写过umysql实现的连接池,直接使用 ----------- umysqldb => wrapper for umysql umysql https://github.com/esn......

flyking
2014/04/10
0
0
Flask-Security中文文档之介绍

此中文文档,全部手撸,绝无抄袭,如有雷同,我也没办法。。。 后续中文文档持续更新。。。 图片来自简书 FlaskSecurity介绍 Flask-Security 允许你为Flask应用快速添加安全机制。他们包括:...

RW老白白
2017/12/01
0
0
python-成长之路

一系列python方面有价值的参考/跟python有关的东西 http://www.path8.net/tn/archives/6017 Tools PyCharm – 来自JetBrains的强大的IDE Python Tools for Visual Studio Eclipse + pydev Ap......

_Mr_Computer_
2016/07/01
0
0
uwsgi对gevent的支持与uliweb的配置

uwsgi在1.4之后已经内置了[对gevent的支持][1]。我们现在常用的是1.9版本。因此可以在启动uwsgi时指定: 后面的数字是指一个进程启动多少个greenlet。 对于uliweb来说,因为是基于wsgi的,而...

limodou
2013/11/03
590
0
uliweb支持在gevent及gevent-socketio上运行

在前面将tornado的支持添加到uliweb中之后,今天又完成了对gevent和gevent-socketio的支持。这里的支持是指可以在它们上面运行。因为tornado, gevent, gevent-socketio都可以作为服务器来跑w...

limodou
2013/09/29
0
1

没有更多内容

加载失败,请刷新页面

加载更多

vi命令详解

vi命令详解 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编...

shzwork
26分钟前
2
0
Centos 7 安装 Docker

参考 https://yq.aliyun.com/articles/110806 1. 卸载旧版的 docker $ sudo yum remove docker \ docker-client \ docker-client-latest \ ......

北漂的我
28分钟前
2
0
GitLab 发布新版本,增强的操作仪表板

昨天,GitLab的团队发布了GitLab 11.10,一个基于Web的DevOps生命周期工具。这个版本提供了新的特性,包括操作仪表板上的管道、合并结果的管道等等。 GitLab 11.10有什么新内容? 增强操作指示...

linuxCool
33分钟前
1
0
spring application 之 ResolveType

jdk1.5 的泛形 变量类型 <t>,<t,k>,<t extends list & map> 这些都是变量类型 类 class A<t extends b & list,k t>{}TypeVariable[] tvs = A.class.getTypeParameters()tvs 的 name 就是......

my_juke
38分钟前
1
0
Java 8的核心新特性:Lambda(匿名函数)、流、默认方法

Java 中的函数 Java 8中新增了函数——值的一种新形式。函数作为一等值,使用方法引用 :: 语法(即“把这个方法作为值”),作为函数式值来传递。 File[] hiddenFiles = new File(".").listF...

Lienson
48分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部