28 lines
787 B
Python
28 lines
787 B
Python
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
from sqlalchemy.orm import scoped_session
|
|
from model.base import Base
|
|
from sqlalchemy import MetaData, Table
|
|
|
|
|
|
|
|
class Database:
|
|
def __init__(self, database_url="sqlite:///finance.db"):
|
|
self.engine = create_engine(database_url)
|
|
self.session = scoped_session(sessionmaker(bind=self.engine))
|
|
|
|
|
|
def create_tables(self):
|
|
Base.metadata.create_all(self.engine)
|
|
|
|
|
|
def drop_tables(self):
|
|
Base.metadata.drop_all(self.engine)
|
|
|
|
|
|
def drop_table(self, table):
|
|
meta = MetaData()
|
|
meta.reflect(bind=self.engine)
|
|
if table in meta.tables:
|
|
table = Table(table, meta, autoload_with=self.engine)
|
|
table.drop(self.engine, checkfirst=True) |