python下的sql处理(python中aioysql异步操作MySQL的方法)
python下的sql处理
python中aioysql异步操作MySQL的方法python异步io初探
探索异步io执之前,先说说io的种类
1.阻塞io最简单,即读写数据时,需要等待操作完成,才能继续执行。进阶的做法就是用多线程来处理需要io的部分,缺点是开销会有些大。
2.非阻塞io,即读写数据时,如果暂时不可读写,则立刻返回,而不等待。因为不知道什么时候是可读写的,所以轮询时可能会浪费cpu时间。
3.io复用,即在读写数据前,先检查哪些描述符是可读写的,再去读写。select 和 poll 就是这样做的,它们会遍历所有被监视的描述符,查看是否满足,这个检查的过程是阻塞的。而 epoll、kqueue 和/dev/poll 则做了些改进,事先注册需要检查哪些描述符的哪些事件,当状态发生变化时,内核会调用对应的回调函数,将这些描述符保存下来;下次获取可用的描述符时,直接返回这些发生变化的描述符即可。
4.信号驱动,即描述符就绪时,内核发送sigio信号,再由信号处理程序处理这些信号即可。不过信号处理的时机是从内核态返回用户态时,感觉也得把这些事件收集起来才好处理,有点想模拟io复用了。
5.最后时异步io,即读写数据时,只注册事件,内核完成读写后(读取的数据会复制到用户态),再调用事件处理函数。这整个过程都不会阻塞调用线程。
python 3.4 开始,标准库里又新增了 asyncio 这个模块。
从原理上来说,它和 tornado 其实差不多,都是注册 io 事件,然后在 io loop 中等待事件发生,然后调用相应的处理函数。
aiomysql说明
1. poll
此库提供一个简单的连接对象用法:
|
import asyncio import aiomysql loop = asyncio.get_event_loop() @asyncio .coroutine def go() pool = yield from aiomysql.create_pool(host = '127.0.0.1' , port = 3306 , user = 'root' , password = '', db = 'mysql' , loop = loop) with ( yield from pool) as conn: cur = yield from conn.cursor() yield from cur.execute( "select 10" ) # print(cur.description) (r,) = yield from cur.fetchone() assert r = = 10 pool.close() yield from pool.wait_closed() loop.run_until_complete(go()) |
解释:
create_pool(minsize=1, maxsize=10, loop=none, **kwargs)
一个协程,创建连接池,连接database
参数:
minsize(int)最小的池子 , 反之maxsize(int)
loop一个可选的事件循环实例,若未循环,使用 asyncio.get_event_loop()
echo(bool)默认log执行sql查询
kwargs
class pool:最重要的是获得连接:
|
with ( yield from pool) as conn: cur = yield from conn.cursor() |
2. aiomysql — api reference
connection
该库用来连接mysql,使用简单的aiomysql.connect(),可以连接一个数据库或者关联池子以连接更多
|
import asyncio # 举例说明 import aiomysql loop = asyncio.get_event_loop() @asyncio .coroutine def test_example(): conn = yield from aiomysql.connect(host = '127.0.0.1' , port = 3306 , user = 'root' , password = ' ', db=' mysql', loop = loop) cur = yield from conn.cursor() yield from cur.execute( "select host,user from user" ) print (cur.description) r = yield from cur.fetchall() print (r) yield from cur.close() conn.close() loop.run_until_complete(test_example()) |
3. cursors 游标
|
import asyncio import aiomysql loop = asyncio.get_event_loop() @asyncio .coroutine def test_example(): conn = yield from aiomysql.connect(host = '127.0.0.1' , port = 3306 , user = 'root' , password = '', db = 'mysql' , loop = loop) # create default cursor cursor = yield from conn.cursor() # execute sql query # 执行sql查询 yield from cursor.execute( "select host, user from user" ) # fetch all results r = yield from cursor.fetchall() # detach cursor from connection yield from cursor.close() # close connection conn.close() loop.run_until_complete(test_example()) |
总结
以上所述是小编给大家介绍的aioysql(异步操作mysql)-python,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
原文链接:https://www.cnblogs.com/devils19/archive/2019/04/11/10689025.html
- python为什么要用多进程(对Python的多进程锁的使用方法详解)
- python 绕过密码(一小段Python代码,破解加密zip文件的密码)
- python四舍五入怎么用(python3 小数位的四舍五入用两种方法解决round 遇5不进)
- python常用的字符串操作方法(Python字符串的常见操作实例小结)
- python3的循环怎么用(对Python3 goto 语句的使用方法详解)
- python3 代码解读(Python3列表内置方法大全及示例代码小结)
- python基本数据结构(浅谈Python编程中3个常用的数据结构和算法)
- 最简单python的100个代码(20条非常实用的Python代码实例)
- python解析视频源码(基于python实现高速视频传输程序)
- python 简单算法(python实现爬山算法的思路详解)
- python中dict怎么创建(Python数据类型之Dict字典实例详解)
- python如何使用multiprocess(Python multiprocessing多进程原理与应用示例)
- python图片识别文字代码(python批量识别图片指定区域文字内容)
- pythonselenium接口自动测试(python3+selenium自动化测试框架详解)
- python线程自动停止了(解决Python中定时任务线程无法自动退出的问题)
- python中字典的主要特点(Python里字典的基本用法包括嵌套字典)
- 缅甸旅游攻略(缅甸旅游攻略必去景点推荐)
- 《庆余年2》新消息,原班人马,肖战特别出演,这才是最好的安排(庆余年2新消息原班人马)
- 宁夏灵武恐龙化石发现始末(宁夏灵武恐龙化石发现始末)
- 到了岁末 临门一脚 节点,天台综合督评会目标直指 全年红(到了岁末临门一脚)
- 寒假余额不满24小时,不如来一场说走就走的亲子阅读之旅(寒假余额不满24小时)
- 省委书记出席的交流会,十位县委书记同场发言,代表公文材料的高水平(省委书记出席的交流会)
热门推荐
- python怎么转换jar包(利用python脚本如何简化jar操作命令)
- nginx负载均衡与动静分离(Nginx配置之实现多台服务器负载均衡)
- css3动画实现loading(CSS3实现粒子旋转伸缩加载动画)
- sqlserver常用配置调整(sql server性能调优 I/O开销的深入解析)
- dedecms的dedesql.class.php on line 489错误的解决方法(dedecms的dedesql.class.php on line 489错误的解决方法)
- python中的pass是干嘛的(总结python中pass的作用)
- php内置加密函数(php过滤htmlspecialchars 函数实现把预定义的字符转换为 HTML 实体用法分析)
- python json转换字符串(python3 json数据格式的转换dumps/loads的使用、dict to str/str to dict、json字符串/字典)
- 阿里云服务器如何选(企业如何选择阿里云服务器配置?)
- 常见的web服务器有哪些(web服务器是什么?web服务器怎么设置)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9