from sqlalchemy import create_engine from sqlalchemy.orm import DeclarativeBase, Session import os import importlib class Db: class Model(DeclarativeBase): __table_args__ = dict(extend_existing=True) pass def __init__(self, db, echo=False): self.db = db self.echo_output = echo self.Engine = self.create_engine() self.session = Session(bind=self.Engine) self.import_models() self.create_tables() def create_engine(self): return create_engine(self.db, echo=self.echo_output) def create_tables(self): self.Model.metadata.create_all(bind=self.Engine) def import_models(self): for filename in os.listdir('./data/models'): if filename.endswith('.py'): importlib.import_module('.' + filename[:-3], 'data.models') def role_exists(self, model: Model, role: str): does_exist = False language = self.session.query(model).filter(model.label == role).first() if language is not None: does_exist = True return does_exist def add_record(self, model): self.session.add(model) self.session.commit()