41 lines
852 B
Python
41 lines
852 B
Python
# third-party imports
|
|
from sqlalchemy import Column, Integer
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
Model = declarative_base(name='Model')
|
|
|
|
|
|
class SessionBase(Model):
|
|
__abstract__ = True
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
|
|
engine = None
|
|
session = None
|
|
query = None
|
|
|
|
|
|
@staticmethod
|
|
def create_session():
|
|
session = sessionmaker(bind=SessionBase.engine)
|
|
SessionBase.session = session()
|
|
return SessionBase.session
|
|
|
|
|
|
@staticmethod
|
|
def _set_engine(engine):
|
|
SessionBase.engine = engine
|
|
|
|
|
|
@staticmethod
|
|
def build():
|
|
Model.metadata.create_all(bind=SessionBase.engine)
|
|
|
|
|
|
@staticmethod
|
|
def connect(dsn):
|
|
e = create_engine(dsn)
|
|
SessionBase._set_engine(e)
|