from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from Context.common import ctx Base = declarative_base() def get_engine(): mysql_conf = ctx.common_conf['mysql'] engine = create_engine( f"mysql+pymysql://{mysql_conf['user']}:{mysql_conf['password']}@{mysql_conf['host']}/{mysql_conf['db']}?charset=utf8mb4") return engine def get_db(): try: engine = get_engine() Session = sessionmaker(autocommit=False, autoflush=False, bind=engine) db = Session() yield db finally: db.close() # def get_db(): # engine = create_engine("sqlite:///./data.db", connect_args={"check_same_thread": False}) # SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # db = SessionLocal() # try: # yield db # finally: # db.close() def init_database(): engine = get_engine() Base.metadata.create_all(bind=engine)