Мой опыт использования FastAPI с SQLAlchemy для создания модели User с внешним ключом связи
Я решил опробовать FastAPI для создания веб-приложения с базой данных․ Одной из первых задач, с которой я столкнулся, было создание модели User с внешним ключом связи с моделью UserRole․ Я использовал библиотеку SQLAlchemy для работы с базой данных․
Шаг 1⁚ Установка FastAPI и SQLAlchemy
Первым делом я установил FastAPI и SQLAlchemy с помощью команды⁚
pip install fastapi sqlalchemy
Шаг 2⁚ Создание моделей
Затем я создал две модели ⸺ User и UserRole․ В модели User я использовал ForeignKey для создания внешнего ключа связи с моделью UserRole․ Вот пример кода⁚
python
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy․orm import relationship
from sqlalchemy․ext․declarative import declarative_base
Base declarative_base
class User(Base)⁚
__tablename__ ‘user’
id Column(Integer, primary_keyTrue, indexTrue)
username Column(String, uniqueTrue, indexTrue)
password Column(String)
role_id Column(Integer, ForeignKey(‘user_role․id’))
role relationship(″UserRole″, back_populates″users″)
class UserRole(Base)⁚
__tablename__ ‘user_role’
id Column(Integer, primary_keyTrue, indexTrue)
name Column(String, uniqueTrue)
users relationship(″User″, back_populates″role″)
Шаг 3⁚ Создание миграций
После создания моделей я использовал Alembic для создания миграций базы данных․ Я установил Alembic с помощью команды⁚
pip install alembic
Затем я создал файл alembic․ini и добавил в него информацию о базе данных․ После этого я запустил команду для инициализации Alembic⁚
alembic init alembic
Теперь я мог создать миграции с помощью следующей команды⁚
alembic revision —autogenerate -m ″Create user and user_role tables″
Шаг 4⁚ Применение миграций
Наконец, я применил созданные миграции к базе данных с помощью команды⁚
alembic upgrade head
Шаг 5⁚ Использование моделей в FastAPI
После создания моделей и применения миграций, я мог использовать эти модели в моем FastAPI приложении․ Вот пример кода, который я использовал для создания эндпоинта⁚
python
from fastapi import FastAPI
from sqlalchemy․orm import Session
app FastAPI
@app․get(″/users»)
def get_users(db⁚ Session Depends(get_db))⁚
users db․query(User)․all
return users
В этом примере я использовал SQLAlchemy Session для получения доступа к базе данных и выбрал всех пользователей из таблицы User․ Затем я вернул список пользователей в качестве ответа на запрос․
Использование FastAPI с SQLAlchemy для создания модели User с внешним ключом связи с моделью UserRole оказалось довольно простым и удобным․ FastAPI предоставляет удобный интерфейс для создания эндпоинтов, а SQLAlchemy обеспечивает простоту работы с базой данных․
Данный опыт показал мне, насколько мощные и гибкие инструменты FastAPI и SQLAlchemy для разработки веб-приложений․