【FastAPI】数据库访问


前言

本文开始介绍关于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<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值