SanicDB 是为 Sanic 方便操作 MySQL 而开发的工具,是对 aiomysql.Pool 的轻量级封装。
这是一个开源的小工具,使用异步io,开箱即用。
使用过Sanic框架的应该会知道,Sanic框架使用的是异步函数,在异步函数中使用同步的功能可能会导致应用阻塞。
例如,你在Sanic的接口函数中写了一段大量写入数据的操作,写入数据是需要时间的,而等待写入完成的这段时间中,Sanic就会进入阻塞状态,整个Sanic框架的接口都无法进行响应。
所以,在Sanic框架中,任何需要等待的操作都需要使用异步操作。
项目地址:https://github.com/veelion/sanicdb
源码很少,尊重作者,这里就不贴出来了。感谢造轮子的兄弟姐妹们。
示例代码:
# coding:utf-8
from sanic import Sanic
from sanic import response
# 导入
from sanicdb import SanicDB
app = Sanic('test')
# 实例化SanicDB
db = SanicDB('localhost', 'databasename', 'username', 'password', sanic=app)
@app.route('/sanicdbTest')
async def sanicdbTest(request):
sql = 'select * from students where age=18'
data = await app.db.query(sql)
return response.json(data)
if __name__ == '__main__':
app.run()