Комментарии 2
Откуда на этапе настройки alembic/env.py взялось следующее?
from src.postgres.models.base import BaseКстати, почему бы не использовать pathlib вместо os.path, который везде помечается не иначе, как obsolete? Да и множество вложенных вызовов делают код трудночитаемым.
from importlib import import_module
from pathlib import Path
from src.postgres.models.base import Base
src_dir = Path(__file__).absolute().parent.parent.parent
# Настройка конфигурации
config = context.config
config_file = src_dir / "configs" / "alembic.ini"
fileConfig(config_file)
# Динамически импортируем все модели из src/models/
models_dir = src_dir / "postgres" / "models"
for path in models_dir.glob("*.py"):
if path.stem in ("__init__", "base"):
continue
module_name = '.'.join((*models_dir.parts[-3:], path.stem))
import_module(module_name)
#Добавляем Метаданные модели
target_metadata = Base.metadata
Спасибо, что обратили внимание! Насчёт `from src.postgres.models.base import Base` — вы правы, это действительно отголосок первоначальной задумки. Изначально я хотел использовать базовый класс Base для всех моделей, но потом перешёл на другой подход, для репозитория нужно использовать другой класс, а в статье забыл обновить этот момент в процессе редактирования. Сейчас там используется более подходящий вариант —
from litestar.plugins.sqlalchemy import baseИсправлю в тексте, чтобы не вводить в заблуждение!
Про pathlib скажу, что он действительно удобнее, os.path использовал как говориться "по-умолчанию", по привычке. Пожалуй, внесу эту правку в код. Спасибо за полезный комментарий!

LitestarCatsCV. Тренируемся на кошках. Реализация API и работа с данными. Часть 2