| 1234567891011121314151617181920212223242526272829 |
- from contextlib import contextmanager
- from sqlalchemy import create_engine
- from sqlalchemy.ext.declarative import declarative_base
- # from sqlalchemy.orm import Session
- from sqlalchemy.orm import sessionmaker
- from sqlalchemy.orm.scoping import scoped_session
- from core import constants
- engine = create_engine(
- f'sqlite:///{constants.DB_PATH}',
- connect_args={'check_same_thread': False},
- echo=constants.SQL_ALCHEMY_VERBOSE)
- Base = declarative_base()
- session_factory = sessionmaker(autocommit=False, autoflush=False, bind=engine)
- Session = scoped_session(session_factory)
- def create():
- if constants.DB_PATH.exists():
- raise FileExistsError('A db file already exists')
- Base.metadata.create_all(engine)
- def close():
- Session.remove()
- engine.dispose()
|