介绍中说的很明白, 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('pwd', sa.String(32), nullable=False),
sa.Column('real_name', sa.String(6), nullable=False),
)
# script: demo.py
import asyncio
from aiomysql.sa import create_en

本文是Sanic教程的一部分,介绍了如何在Sanic中进行异步数据库操作,包括使用aiomysql操作MySQL,用motor操作MongoDB,以及通过aioredis操作Redis。文中给出了具体的代码示例和目录结构,帮助读者理解如何在异步环境中与不同数据库交互。
最低0.47元/天 解锁文章
1517

被折叠的 条评论
为什么被折叠?



