Python中Tornado框架下有哪些好用的MySQL库?

最近在学 python3 的一些框架,求问~
torndb 是不是还不支持 python3 以上版本的说~
大家都是用什么的呀~第一次求问,感谢各位~
Python中Tornado框架下有哪些好用的MySQL库?

16 回复

在线等咯~


在Tornado框架下,有几个专门适配其异步特性的MySQL库是比较好用的选择。最主流和推荐的是 aiomysql,它是基于asyncio的MySQL客户端,与Tronado的异步IOLoop能无缝集成。另一个选择是 torndb,它更轻量,但注意它本身是同步的,通常需要配合Tornado的异步装饰器或线程池来使用,以避免阻塞主循环。

这里给你一个使用 aiomysql 的完整示例。首先确保你已经安装了它:pip install aiomysql

import tornado.ioloop
import tornado.web
import aiomysql

# 一个简单的异步数据库连接池创建函数
async def create_pool():
    return await aiomysql.create_pool(
        host='localhost',
        port=3306,
        user='your_username',
        password='your_password',
        db='your_database',
        autocommit=True,
        minsize=1,
        maxsize=10
    )

class MainHandler(tornado.web.RequestHandler):
    async def get(self):
        # 从连接池获取连接
        async with self.application.db_pool.acquire() as conn:
            async with conn.cursor(aiomysql.DictCursor) as cur:
                # 执行一个查询
                await cur.execute("SELECT id, name FROM users LIMIT 5")
                result = await cur.fetchall()
                # 将结果返回给客户端
                self.write({'users': result})

def make_app():
    # 创建Tornado应用
    app = tornado.web.Application([
        (r"/", MainHandler),
    ])
    # 在应用启动时创建数据库连接池
    app.db_pool = tornado.ioloop.IOLoop.current().run_sync(create_pool)
    return app

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    print("Server started on http://localhost:8888")
    tornado.ioloop.IOLoop.current().start()

核心解释:

  1. aiomysql.create_pool: 创建一个异步连接池,minsizemaxsize控制池的大小。
  2. 连接获取与上下文管理器: 使用 async with pool.acquire() as conn: 来安全地获取和释放连接。
  3. DictCursor: 让查询结果以字典形式返回,更方便处理。
  4. 集成到Tornado: 在 make_app 函数中,我们通过 run_sync 在IOLoop启动前同步地创建好连接池,并挂载到 app 对象上,方便在各个Handler中调用。

总结建议: 对于新项目,直接使用 aiomysql 是首选。

我可以给你一个我用的,tornado 的修改版本

说错了是 torndb

代码在 [https://www.twle.cn/t/163#reply0]( https://www.twle.cn/t/163#reply0) 这里,你自己复制到一个 <a target="_blank" href="http://tornado.py" rel="nofollow noopener">tornado.py</a> 的文件里即可,有问题私信

谢谢~~

不需要用 torndb,
用 aiomysql

什么叫不支持 Python 3,你都不看官方文档的?

我看错了,不过 torndb 都不维护了

啊哦~我看看你说的这个,大概原理都大同小异,主要想找比较主流一点的~~~谢谢~

就用你推荐的这个,我先试试~~感谢

大佬,我 down 下这个库,然后把你代码帖进去吧。。。。是不是呀~

tormysql

----

然后,学 go 吧。

[rain.ext]( https://github.com/ztkIsAlreadyTaken/rain/tree/master/rain/ext)

自荐一下,嘿嘿~基于 PyMysql 的异步实现,,

已经搞定~✌️感谢

回到顶部