Sanic教程:5.数据库使用

介绍中说的很明白, 是一个可以使用 语法编写项目的异步非阻塞框架,既然是异步框架,那么在使用过程中用到的第三方包也最好是异步的,比如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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181218G0IGU600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券