То, что вам нужно для достижения, хорошо описано в документации по пилонам: Определение таблиц и классов ORM :
Модель состоит из двух файлов: __init__.py
и meta.py. __init__.py
содержит определения таблиц и классы ORM, а также функцию init_model (), которая должна вызываться при запуске приложения. meta.py - это просто контейнер для вспомогательных объектов SQLAlchemy (Session, metadata и engine), которые будут использовать не все приложения.
Пример __init__.py
показан в ссылке, тогда как meta.py
выглядит примерно так:
from sqlalchemy import MetaData
from sqlalchemy.orm import scoped_session, sessionmaker
__all__ = ['Session', 'engine', 'metadata']
engine = None
Session = scoped_session(sessionmaker())
metadata = MetaData()
Вы можете считать этот модуль реализацией singleton
, если хотите, так как он выполнит работу (загрузки и наличия одного экземпляра в большем количестве Pythonic ) за вас при первой загрузке модуля.