【Python】FastAPI框架快速实现后端(一)

FastAPI框架快速实现后端-SQLModel的使用

  • 介绍
  • 正文
    • 基础模型
    • 模型与表
    • 定义数据表模型
    • 关系定义

介绍

最近1个多月,用FastAPI做了几个日常工作用的小功能,感觉FastAPI确实很适合这种场景,功能要求简单,交付要求比较急,这个时候一个人就能快速用FastAPI写个东西出来马上就用,在这个背景下,我选择使用FastAPI,并且使用过程中也算是有了些积累,分享一下,本章先说说SQLModel。

FastAPI团队为了进一步降低框架使用门槛,还开发了一个SQLModel的ORM来配套使用,虽然相比sa来说SQLModel限制很多,而且不是很灵活,并发方面也有一些bug,但是确实很简单。

正文

下面的内容默认读者具备一些基本概念,比如模型,ORM,Python

基础模型

一般来说,现在设计数据库的时候都会有一些基础字段,比如主键ID、创建时间、更新时间,SQLModel在这里和其他ORM的使用没什么差别,优先定义BaseModel:

import uuid
from datetime import datetime, timezone
from sqlmodel import SQLModel, Field, DateTime

class BaseModel(SQLModel):
    id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
    created_at: datetime = Field(
        default_factory=lambda: datetime.now(timezone.utc),
        sa_type=DateTime(timezone=True),
        nullable=False
    )
    updated_at: datetime = Field(
        default_factory=lambda: datetime.now(timezone.utc),
        sa_type=DateTime(timezone=True),
        sa_column_kwargs={
   "onupdate": datetime.now(timezone.utc)}
    )

这里的定义方式指定默认会使用时区,并且updated_at会实现修改自动更新的功能,其他的数据表模型在编写的时候只需要集成BaseModel即可

模型与表

在SQLModel中可以直接通过Table参数来生命该模型是否是数据库表模型,默认是False,如果指定为True,则该模型会与数据库表关联上,比如这是一个普通的模型:

import time
from sqlmodel import SQLModel, Field


class RequestAlertQuery(SQLModel):
    title: str | None = None
    labels

你可能感兴趣的:(python,fastapi,数据库)