SocialNetwork
32 строки · 845.0 Байт
1import sqlalchemy as sa
2import sqlalchemy.orm as orm
3from sqlalchemy.orm import Session
4import sqlalchemy.ext.declarative as dec
5
6SqlAlchemyBase = dec.declarative_base()
7
8__factory = None
9
10def global_init(db_file):
11global __factory
12
13if __factory:
14return
15
16if not db_file or not db_file.strip():
17raise Exception("Необходимо указать файл базы данных.")
18
19conn_str = f'sqlite:///{db_file.strip()}?check_same_thread=False'
20print(f"Подключение к базе данных по адресу {conn_str}")
21
22engine = sa.create_engine(conn_str, echo=False)
23__factory = orm.sessionmaker(bind=engine, autoflush=False)
24
25from . import __all_models
26
27SqlAlchemyBase.metadata.create_all(engine)
28
29
30def create_session() -> Session:
31global __factory
32return __factory()