目录
前言
本文开始介绍关于FastAPI数据库访问部分知识。
一、配置mysql数据库
参考 【Docker】docker-compose安装配置mysql
二、设计数据库表
参考 【MySQL】数据库设计
表结构设计
t_api:存储一个接口的基本信息
t_group
编写初始化sql脚本
# init.sql
-- 先设置外键约束检查关闭
SET foreign_key_checks = 0;
-- 删除group表(如果存在)
DROP TABLE IF EXISTS t_group;
DROP TABLE IF EXISTS t_api;
-- 开启外键约束检查,以保持表结构完整性
SET foreign_key_checks = 1;
-- 创建group表
CREATE TABLE t_group(
id int primary key auto_increment,
name varchar(20) not null unique,
remark varchar(64) not null
);
-- 添加数据
INSERT INTO t_group(name,remark) values('group1','group1 remark'),('group2','group2 remark');
-- 查询表
SELECT * FROM t_group;
-- 创建接口表
CREATE TABLE t_api(
id int primary key auto_increment,
name varchar(20) not null unique,
path varchar(64) not null,
method varchar(6) not null default 'GET',
status int(1) not null default '1',
description varchar(128),
params varchar(128),
headers varchar(128),
group_id int default NULL
-- ,constraint group_foreign foreign key (group_id) references t_group(id)
);
-- 修改外键约束
ALTER TABLE `t_api` ADD CONSTRAINT `group_foreign` FOREIGN KEY (`group_id`) REFERENCES `t_group` (`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- 添加数据
INSERT INTO t_api(name,path,method,status,description,params,headers,group_id) values('name1','/api/test','GET',0,'test1','params1','headers1',1),('name2','/api/test2','POST',1,'test2','params2','headers2',1);
-- 查询表
SELECT * FROM t_api;
三、代码编写
1. 通用配置(仅需配置一次)
导入数据库相关组件
pip install pymysql # 用于数据库连接
pip install SQLAlchemy # 用于数据库表和对象之间关系映射
封装mysql数据库连接和映射的基类
(1)创建mysql配置文件
# data\config.ini
[database]
server = 192.168.xx.xx
username = root
password = root
port = 3306
dbname = xx
(2)封装读取mysql配置的py文件
# common\config.py
import configparser
# 属性尽量不要直接获取,而是通过方法进行封装
# 属性信息尽量是私有的
# 单例模式
class Config:
# 类成员,引用方式是:类名.类成员名称,例如:Config.__configfile
__configfile = r'D:\code\fastapidemo\data\config.ini'
def __init__(self):
"""
初始化函数,所有实例变量的定义及初始化都在这里完成
"""
c = configparser.ConfigParser()
c<