Модуль импорта, который определяет модели SQLalchemy ORM, динамически вводя базовый класс, но с проверкой статического тPython

Программы на Python
Anonymous
Модуль импорта, который определяет модели SQLalchemy ORM, динамически вводя базовый класс, но с проверкой статического т

Сообщение Anonymous »

Я рефакторирую кодовую базу Python, чтобы быть модульной, каждый модуль определяет свои собственные модели sqlalchemy. Поскольку все модели определены в отдельных файлах схемы, которые могут быть включены или исключены на основе Envfile, необходимо быть единой Declarative_base () , который они все используют.
Я подошел к этому, чтобы каждый файл schema.py определил функцию, которая принимает базовую , а затем использует это в качестве родителя для наследства класса:

Код: Выделить всё

# path/to/my/module/schema.py

def schema(Base):
class File(Base):
__tablename__ = "files"
id: Mapped[str] = mapped_column(String(36))

return (File,)
< /code>
Затем, в моем приложении с более высоким уровнем, я могу динамически загрузить его в: < /p>
# main.py

Base = declarative_base()
for schema in schemas:
schema(Base)
< /code>
Это работает нормально. Проблема в том, что потому, что я возвращаю класс из функции, он больше не отображается для проверки статического типа Pylance. < /P>
Например: < /p>
# path/to/my/module/Files.py

from .schema import schema

class Files():
files: List[File] = []  # 

Подробнее здесь: [url]https://stackoverflow.com/questions/79400538/import-module-that-defines-sqlalchemy-orm-models-dynamically-injecting-a-base-c[/url]

Вернуться в «Python»