介绍中说的很明白, Sanic
是一个可以使用 async/await
语法编写项目的异步非阻塞框架,既然是异步框架,那么在使用过程中用到的第三方包也最好是异步的,比如http请求,最好就使用 aihttp
而非 requests
,对于数据库的连接,也是同样如此,下面我将用代码的形式来说明下如何在Sanic中连接数据库。
操作Mysql
对于mysql数据库的异步操作,我只在一些脚本中用过,用的是aiomysql,其中官方文档中讲得很清楚,也支持结合 sqlalchemy
编写 ORM
,然后aiomysql提供了自己编写的异步引擎。
from aiomysql.sa import create_engine
# 这个才是关键
下面我编写一个具体的例子来用异步语句操作下数据库,首先建立如下目录:
aio_mysql
├── demo.py
├── model.py
└── requirements.txt
建立表:
create database test_mysql;
CREATE TABLE user
(
id INT AUTO_INCREMENT
PRIMARY KEY,
user_name VARCHAR(16) NOT NULL,
pwd VARCHAR(32) NOT NULL,
real_name VARCHAR(6) NOT NULL
);
一切准备就绪,下面编写代码:
# script: model.py
import sqlalchemy as sa
metadata = sa.MetaData()
user = sa.Table(
'user',
metadata,
sa.Column('id', sa.Integer, autoincrement=True, primary_key=True),
sa.Column('user_name', sa.String(16), nullable=False),
sa.Column(&#