Python基础入门 Day51:FastAPI 与 SQLite 实现完整数据接口

99次阅读
没有评论

共计 1796 个字符,预计需要花费 5 分钟才能阅读完成。

FastAPI 与数据库集成,能够快速实现具有数据持久化功能的 Web 接口。本节将使用 SQLAlchemy 操作 SQLite,实现一个完整的增删查改 API 服务。

一、安装依赖
我们使用 SQLAlchemy 作为 ORM 工具,并使用 SQLite 作为轻量级数据库:

pip install sqlalchemy

二、数据库模型定义(models.py)

from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)
    email = Column(String, unique=True, index=True)

DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})

Base.metadata.create_all(bind=engine)

三、创建数据库会话(database.py)

from sqlalchemy.orm import sessionmaker
from models import engine

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

四、Pydantic 模型定义(schemas.py)

from pydantic import BaseModel

class UserCreate(BaseModel):
    name: str
    email: str

class UserRead(UserCreate):
    id: int

    class Config:
        orm_mode = True

五、FastAPI 接口实现(main.py)

from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.orm import Session
from models import User
from database import SessionLocal
from schemas import UserCreate, UserRead

app = FastAPI()

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

@app.post("/users/", response_model=UserRead)
def create_user(user: UserCreate, db: Session = Depends(get_db)):
    db_user = User(name=user.name, email=user.email)
    db.add(db_user)
    db.commit()
    db.refresh(db_user)
    return db_user

@app.get("/users/{user_id}", response_model=UserRead)
def read_user(user_id: int, db: Session = Depends(get_db)):
    user = db.query(User).filter(User.id == user_id).first()
    if user is None:
        raise HTTPException(status_code=404, detail="User not found")
    return user

六、运行服务

uvicorn main:app --reload

接口说明:

  • POST /users/:创建用户
  • GET /users/{user_id}:根据 ID 获取用户信息

七、总结
使用 FastAPI + SQLAlchemy + SQLite,可以快速搭建本地开发用的数据接口。生产环境可将数据库换成 PostgreSQL、MySQL,并加入 JWT 验证等安全机制。

下一节将讲解如何用 FastAPI 实现 JWT 登录认证。

正文完
 0
评论(没有评论)