如何快速创建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  # 更新迁移
相关推荐
测试19982 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
曲幽4 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
小鹏linux5 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
在角落发呆5 小时前
Linux转发配置:解锁网络互联的核心密码
linux·运维·网络
前端若水6 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
齐潇宇6 小时前
Zabbix 7 概述与配置
linux·zabbix·监控告警
涛声依旧-底层原理研究所6 小时前
残差连接与层归一化通俗易懂的详解
人工智能·python·神经网络·transformer
csdn_aspnet7 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
fantasy_arch7 小时前
pytorch人脸匹配模型
人工智能·pytorch·python
熊猫_豆豆7 小时前
广义相对论水星近日点进动完整详细数学推导
python·天体·广义相对论