33 lines
944 B
Python
33 lines
944 B
Python
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 add_record(self, model):
|
|
self.session.add(model)
|
|
self.session.commit() |