如何快速创建Fastapi项目

一、环境安装

安装第三方库来搭建项目依赖

python 复制代码
pip install fastapi  # fastapi框架
pip install tortoise-orm[accel]  # 数据库的orm
pip install uvicorn  # web服务器
pip install pyjwt  # 权限认证
pip install aerich  # 数据库迁移
pip install aiomysql # Mysql数据库驱动

二、项目结构

构建大型的项目结构,文件结构如下图

Haskell 复制代码
├───apps   # apps的功能模块
│   └───user  # 具体的功能模块
│         │ 
│         ├──────app.py # 业务逻辑文件
│         ├──────models.py # 数据库模型文件
│         ├──────schemas.py # pydantic模型文件
│ 
├───logs  # 日志文件夹
├───utils  # 工具文件价:权限认证等文件可以放在这里
├───main.py # 项目运行入口
├───settings  # 项目设置文件

三、配置项目

main.py文件写入一下内容

python 复制代码
import uvicorn
from fastapi import FastAPI
from starlette.staticfiles import StaticFiles
from tortoise.contrib.fastapi import register_tortoise
from settings import orm
from apps.user.app import user


app=FastAPI(title='重庆二手房系统',version='1.0.0')  # 配置app和swager的标题和版本

register_tortoise(app=app,config=orm)  # 在fastapi里连接数据库

app.mount("/static",StaticFiles(directory="static"),name="static")  # 挂载静态文件夹

app.include_router(router=user,prefix='/user',tags=['用户模块'])  # 配置项目子路由

if __name__ == '__main__':
    uvicorn.run(app='main:app',host='127.0.0.1',port=8000,reload=True)  # 配置项目服务器

四、配置数据库

setting.py文件配置以下内容

python 复制代码
# 配置数据库连接
orm={
    "connections": {
        "default": {
            "engine": "tortoise.backends.mysql",
            "credentials": {
                "host": "localhost",  # 数据库主机
                "port": 3306,  # 数据库端口
                "user": "root",  # 用户名
                "password": "123456",  # 密码
                "database": "house"  # 数据库名称
            }
        }
    },
    "apps": {
        "models": {
            "models": ["模型的路径和文件名","aerich.models"],
            "default_connection": "default",
        }
    },
    "use_tz":False,
    "timezone": "Asia/Shanghai",  # 配置时区
}

五、数据库迁移

在项目的根目录下,打开终端,依次执行一下命令,执行数据库的迁移

python 复制代码
aerich init -t settings.orm  # 初始化Aerich,指定Aerich配置文件的位置
aerich init-db  # 初始化Aerich 的数据库
aerich migrate  # 执行迁移
aerich upgrade  # 更新迁移
相关推荐
Biomamba生信基地9 分钟前
Biomamba劝学
linux·服务器·生信
დ旧言~1 小时前
【Python】使用库
python
邪恶的贝利亚2 小时前
python的运行--命令行
linux·运维·服务器
偏右右2 小时前
Linux常见命令
linux
weixin_519311742 小时前
通过多线程分别获取高分辨率和低分辨率的H264码流
linux·运维·算法
哥是黑大帅2 小时前
Milvus向量数据库部署
数据库·python·milvus
剑走偏锋o.O2 小时前
Linux常用指令学习笔记
linux·linux常用指令
刘翔在线犯法2 小时前
虚拟机IP的配置,让它上网
linux·运维·服务器
补三补四2 小时前
Django与数据库
数据库·python·django