如何快速创建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  # 更新迁移
相关推荐
NEXU54 小时前
Linux:套接字
linux·服务器·网络
独行soc5 小时前
2025年渗透测试面试题总结-18(题目+回答)
android·python·科技·面试·职场和发展·渗透测试
morliz子轩5 小时前
基于WSL搭建Ubuntu 22.04.x LTS开发环境
linux·运维·ubuntu
S01d13r5 小时前
gunicorn + flask 处理高并发请求
python·flask·gunicorn
杜子不疼.5 小时前
《Python列表和元组:从入门到花式操作指南》
开发语言·python
pan0c235 小时前
数据处理与统计分析 —— numpy入门
python·numpy
max5006006 小时前
基于桥梁三维模型的无人机检测路径规划系统设计与实现
前端·javascript·python·算法·无人机·easyui
Janspran6 小时前
嵌入式linux学习 -- 进程和线程
linux·运维·学习
秋氘渔6 小时前
综合案例:Python 函数知识整合 — 学生成绩管理系统
开发语言·python
Cosmoshhhyyy7 小时前
linux远程部署dify和mac本地部署dify
linux·运维·macos