db_session.py 739 B

1234567891011121314151617181920212223242526272829303132
  1. import sqlalchemy as sa
  2. import sqlalchemy.orm as orm
  3. from sqlalchemy.orm import Session
  4. import sqlalchemy.ext.declarative as dec
  5. SqlAlchemyBase = dec.declarative_base()
  6. __factory = None
  7. def global_init(db_file):
  8. global __factory
  9. if __factory:
  10. return
  11. if not db_file or not db_file.strip():
  12. raise Exception("Необходимо указать файл базы данных.")
  13. conn_str = f'sqlite:///{db_file.strip()}?check_same_thread=False'
  14. engine = sa.create_engine(conn_str, echo=False)
  15. __factory = orm.sessionmaker(bind=engine)
  16. from . import __all_models
  17. SqlAlchemyBase.metadata.create_all(engine)
  18. def create_session() -> Session:
  19. global __factory
  20. return __factory()