如何快速创建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  # 更新迁移
相关推荐
小白学大数据13 小时前
增量爬取策略:如何持续监控贝壳网最新成交数据
爬虫·python·性能优化
刘某的Cloud13 小时前
ceph osd down排查
linux·运维·ceph·系统·osd
@forever@18 小时前
【JAVA】LinkedList与链表
java·python·链表
安审若无18 小时前
图数据库neoj4安装部署使用
linux·运维·数据库
程序员爱钓鱼18 小时前
Python编程实战:面向对象与进阶语法——类型注解与代码规范(PEP 8)
后端·python·ipython
程序员爱钓鱼18 小时前
Python实战:用高德地图API批量获取地址所属街道并写回Excel
后端·python·ipython
做运维的阿瑞18 小时前
CentOS DNS故障排查完整解决方案:从症状到根因的系统化诊断
linux·运维·centos
QT 小鲜肉19 小时前
【个人成长笔记】在 Linux 系统下撰写老化测试脚本以实现自动压测效果(亲测有效)
linux·开发语言·笔记·单片机·压力测试
itachi-uchiha19 小时前
head和tail命令使用
linux·运维·服务器
reasonsummer19 小时前
【教学类-97-06】20251105“葡萄”橡皮泥黏贴(小班主题《苹果与橘子》)
python