Как корректно заюзать Engine и Session из SQLAlchemy для создания репозитория моделей? Нужно ли делать синглтон(ы) для них или пусть каждая модель запускает свой движек и сессию?
Base = declarative_base()
class A(Base):
...
class B(Base):
...
class Store:
def __init__(self):
psql = 'postgresql://user:123@localhost/pdb'
self.engine = create_engine(psql)
self.sessionMaker = sessionmaker(bind=self.engine)
self.sessionMaker = self.sessionMaker()
def __del__(self):
self.sessionMaker.commit()
self.sessionMaker.close_all()
class AStore(Store):
def reCreate(self):
Base.metadata.drop_all(bind=self.engine, tables=[A.__table__])
Base.metadata.create_all(self.engine, tables=[A.__table__])
def adds(self, rows):
for row in rows:
params = A(**row);
self.sessionMaker.add(params)
self.sessionMaker.commit()
class BStore(Store):
...