Подключение SQLModel к FastAPI: подробное руководство с примерами кода

В этой статье блога мы рассмотрим процесс подключения SQLModel, мощной и эффективной библиотеки для работы с базами данных SQL, с FastAPI, современной и высокопроизводительной веб-инфраструктурой. Мы рассмотрим несколько методов и предоставим примеры кода, которые помогут вам понять процесс интеграции этих двух популярных инструментов. Давайте погрузимся!

Методы подключения SQLModel к FastAPI:

  1. Настройка среды:
    Для начала убедитесь, что в вашей среде Python установлены SQLModel и FastAPI. Вы можете использовать pip для установки этих зависимостей:

    pip install sqlmodel fastapi
  2. Определение моделей базы данных.
    SQLModel предоставляет декларативный синтаксис для определения моделей базы данных. Вот пример простой модели, представляющей пользователя:

from sqlmodel import Field, SQLModel
class User(SQLModel):
    id: int = Field(primary_key=True)
    username: str = Field(index=True)
    email: str = Field(index=True)
    password: str = Field()
  1. Создание подключения к базе данных:
    Далее вам необходимо установить соединение с базой данных SQL. SQLModel поддерживает различные базы данных, такие как SQLite, PostgreSQL и MySQL. Вот пример использования SQLite:
from sqlmodel import create_engine
database_url = "sqlite:///./mydatabase.db"
engine = create_engine(database_url)
  1. Определение приложения FastAPI:
    Теперь давайте создадим приложение FastAPI и настроим его для использования механизма SQLModel:
from fastapi import FastAPI
from sqlmodel.main import SQLModelMiddleware
app = FastAPI()
app.add_middleware(SQLModelMiddleware, db_engine=engine)
  1. Создание конечных точек API:
    После завершения настройки вы можете определить конечные точки API с помощью декораторов FastAPI. Вот пример базового CRUD API для модели пользователя:
from fastapi import HTTPException
from sqlmodel import Session, select
from sqlmodel.exc import NoResultFound
@app.post("/users")
def create_user(user: User):
    with Session(engine) as session:
        session.add(user)
        session.commit()
        session.refresh(user)
        return user
@app.get("/users/{user_id}")
def get_user(user_id: int):
    with Session(engine) as session:
        query = select(User).where(User.id == user_id)
        try:
            result = session.exec(query).one()
            return result
        except NoResultFound:
            raise HTTPException(status_code=404, detail="User not found")

В этой статье мы рассмотрели различные методы подключения SQLModel к FastAPI. Мы рассмотрели настройку среды, определение моделей базы данных, создание подключения к базе данных, определение приложения FastAPI и создание конечных точек API. Следуя этим шагам и используя предоставленные примеры кода, вы сможете легко интегрировать SQLModel и FastAPI для создания надежных и эффективных веб-приложений. Приятного кодирования!