介绍中说的很明白, 是一个可以使用 语法编写项目的异步非阻塞框架,既然是异步框架,那么在使用过程中用到的第三方包也最好是异步的,比如http请求,最好就使用 而非 ,对于数据库的连接,也是同样如此,下面我将用代码的形式来说明下如何在Sanic中连接数据库。
操作Mysql
对于mysql数据库的异步操作,我只在一些脚本中用过,用的是aiomysql,其中官方文档中讲得很清楚,也支持结合 编写 ,然后aiomysql提供了自己编写的异步引擎。
下面我编写一个具体的例子来用异步语句操作下数据库,首先建立如下目录:
建立表:
一切准备就绪,下面编写代码:
运行 python demo.py,会看到如下输出:
很简单吧,具体示例见aio_mysql,如果你比较喜欢类似SQLAlchemy的操作方式,这里推荐一个异步ORM,gino。
操作MongoDB
我业余写的一个项目,基本用的就是 来储存数据,对于异步操作 ,目前Python主要用的是motor,使用起来依旧很简单,但是结合具体功能,就有不同的需求,最后就会形成各种各样的连接方案,这里我主要分享下自己是如何使用的,目录如下所示:
是一个基于分布式文件存储的数据库,它介于关系数据库和非关系数据库之间,所以它使用起来也是比较灵活的,打开 :
我最开始,使用的是这种方式来连接 ,上面代码保证了集合中的db被_db维护,保证只会创建一次,如果你项目中不会随意更改集合的话,也没什么大问题,如果不是,我推荐使用下面这样的连接方式,可以自由地更换集合与db:
为了避免重复创建MotorBase实例,可以实现一个单例模式来保证资源的有效利用,具体代码以及运行demo见aio_mongo
操作Redis
对于Redis的异步操作,我选用的是 ,你大可不必非要使用这个,或许其他的库实现地更好,我只是用这个举个例子,建立如下目录:
建立一个redis连接池:
具体见aio_redis,使用起来很简单,不做多叙述。
说明
如果你使用其它类型的数据库,其实使用方式也是类似。 本章代码地址,见demo05
领取专属 10元无门槛券
私享最新 技术干货