FastAPI零基础快速入门教程

本集视频在 B 站 BV1Byu76zEpf · P1

去 B 站看本集

01. 创建FastAPI项目

安装环境

Python(推荐 3.12+)、MySQL(8.0+)、Pycharm2024

关注微信公众号 程序员青戈 回复:python软件

配置 pip 加速镜像

打开 %APPDATA% 目录,新建 pip\pip.ini

text
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

创建项目

设置虚拟环境 .venv

依赖包版本 reqirements.txt

text
fastapi==0.111.0
uvicorn==0.29.0
sqlalchemy==2.0.51
pymysql==1.1.0
pydantic-settings==2.2.1

安装依赖

text
pip install -r requirements.txt

添加启动入口

python
from app.core.config import settings

app = FastAPI(title="FastAPI服务", version="0.0.1")

if __name__ == "__main__":
    uvicorn.run("app.main:app", host="127.0.0.1", port=8000, reload=True)

设置测试接口

python
@app.get("/")
def reed_root():
    return {"message": "FastAPI服务正在运行中"}

添加配置文件 .env

text
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=123456
MYSQL_DATABASE=fastapi-db

DEBUG=True

读取配置文件

python
from pathlib import Path

from pydantic_settings import BaseSettings, SettingsConfigDict

BASE_DIR = Path(__file__).resolve().parents[2]   # 项目根目录

class Settings(BaseSettings):
    """配置类"""
    model_config = SettingsConfigDict(
        env_file=BASE_DIR / ".env",
        env_file_encoding="utf-8",
    )

    MYSQL_HOST: str
    MYSQL_PORT: int
    MYSQL_USER: str
    MYSQL_PASSWORD: str
    MYSQL_DATABASE: str

    DEBUG: bool

    @property
    def DATABASE_URL(self) -> str:
        """数据库URL"""
        """mysql+pymysql://root:123456@127.0.0.1:3306/fastapi-db?charset=utf8mb4"""
        return (f"mysql+pymysql://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}"
                f"@{self.MYSQL_HOST}:{self.MYSQL_PORT}/{self.MYSQL_DATABASE}?charset=utf8mb4")

settings = Settings()