Python中Tornado框架下有哪些好用的MySQL库?
最近在学 python3 的一些框架,求问~
torndb 是不是还不支持 python3 以上版本的说~
大家都是用什么的呀~第一次求问,感谢各位~
Python中Tornado框架下有哪些好用的MySQL库?
在线等咯~
在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()
核心解释:
- aiomysql.create_pool: 创建一个异步连接池,
minsize和maxsize控制池的大小。 - 连接获取与上下文管理器: 使用
async with pool.acquire() as conn:来安全地获取和释放连接。 - DictCursor: 让查询结果以字典形式返回,更方便处理。
- 集成到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 的异步实现,,
是
已经搞定~✌️感谢
6666666

