有一个库叫做aiomysql,这是一个基于asyncio和pymysql的库。至于为什么可以在tornado中使用,是因为高版本tornado的底层使用了asyncio。

import asyncio
import aiomysql

async def test(loop):
    # 这里的loop就是我们通过asyncio.get_event_loop()创建的,但是其实可以不传,因为会自动创建一个
    async with aiomysql.create_pool(host="localhost", port=3306, user="root",
                                    password="zgghyys123", db="satori", loop=loop) as pool:
        async with pool.acquire() as conn:
            async with conn.cursor() as cursor:
                await cursor.execute("select * from girl")
                data1 = await cursor.fetchone()
                data2 = await cursor.fetchall()
                print(data1)
                print(data2)

        pool.close()
        await pool.wait_closed()

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(test(loop))
(0, '古明地觉', 16, 'f')
((1, '椎名真白', 17, 'f'), (2, '古河渚', 20, 'f'))

  我们看看可不可以使用tornado去启动aiomysql

import tornado.ioloop
import aiomysql

async def test():
    # 这里的loop就是我们通过asyncio.get_event_loop()创建的,但是其实可以不传,因为会自动创建一个
    async with aiomysql.create_pool(host="localhost", port=3306, user="root",
                                    password="zgghyys123", db="satori") as pool:
        async with pool.acquire() as conn:
            async with conn.cursor() as cursor:
                await cursor.execute("select * from girl")
                data1 = await cursor.fetchone()
                data2 = await cursor.fetchall()
                print(data1)
                print(data2)

        pool.close()
        await pool.wait_closed()

if __name__ == '__main__':
    tornado.ioloop.IOLoop.current().run_sync(test)

  

一样是可以的,因为tornado的底层事件循环使用的便是asyncio

aiomysql还可以和SQLAlchemy结合

pass

最新文章

  1. 前端框架 EasyUI (2)页面布局 Layout
  2. 软件工程(C编码实践篇)学习心得
  3. 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段
  4. ORACLE等待事件:enq: TX - row lock contention
  5. ios蓝牙开发(三)ios连接外设的代码实现:手机app去读写蓝牙设备。
  6. XHTML表单
  7. Intellij编译时报“java: System Java Compiler was not found in classpath” 解决办法
  8. python中使用list作为默认参数且调用时不给其赋值的问题
  9. Linux更改默认jdk
  10. GNU glibc
  11. UML中的交互图<转>
  12. Java 堆内存(Heap)[转]
  13. Ubuntu上使用Web QQ
  14. 中国孩子的micro:bit:TurnipBit自制小乐器教程实例
  15. jmeter 中如何一次运行多条sql语句
  16. NGUI实现的一套不同大小 Item 的循环滚动代码
  17. Java泛型的PECS原则
  18. The class cn.itcast.web.common.util.UtilFuns specified in TLD for the function selffn:htmlNewline cannot be found: cn.itcast.web.common.util.UtilFuns
  19. mysql的sql性能分析器
  20. servlet awt随机图片验证码

热门文章

  1. php处理三级分类数据
  2. python json模块 超级详解
  3. Java课程设计--学生成绩管理系统
  4. (转) linux I/O优化 磁盘读写参数设置
  5. 一个flink作业的调优
  6. 【bzoj2006】[NOI2010]超级钢琴 倍增RMQ+STL-堆
  7. C#的23种设计模式概括
  8. Reabble.com-KindleRSS新闻杂志订阅
  9. [洛谷P1951]收费站_NOI导刊2009提高(2)
  10. [LG1886]滑动窗口 单调队列