如何快速创建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  # 更新迁移
相关推荐
Python私教5 分钟前
字节跳动开源图标库:2000+图标一键换肤的魔法
python·开源
何双新8 分钟前
第2讲、Odoo深度介绍:开源ERP的领先者
python·开源
藥瓿亭13 分钟前
K8S认证|CKS题库+答案| 4. RBAC - RoleBinding
linux·运维·服务器·云原生·容器·kubernetes·cks
吐泡泡_28 分钟前
Linux(线程控制)
linux
2301_8050545641 分钟前
Python训练营打卡Day46(2025.6.6)
开发语言·python
曹勖之1 小时前
撰写脚本,通过发布/joint_states话题改变机器人在Rviz中的关节角度
开发语言·python·机器人·ros2
蹦蹦跳跳真可爱5891 小时前
Python----目标检测(训练YOLOV8网络)
人工智能·python·yolo·目标检测
梓仁沐白1 小时前
【Kotlin】注解&反射&扩展
开发语言·python·kotlin
Xi_Xu1 小时前
全面解析:tzst 归档格式的先进性与跨平台文件管理指南
python·pypy
Kusunoki_D1 小时前
Python-正则表达式(re 模块)
python·正则表达式