|
@@ -0,0 +1,28 @@
|
|
|
+from contextlib import contextmanager
|
|
|
+
|
|
|
+from sqlalchemy import create_engine
|
|
|
+from sqlalchemy.orm import sessionmaker
|
|
|
+
|
|
|
+from config import POSTGRES
|
|
|
+from command_system import ModelBase
|
|
|
+
|
|
|
+engine = create_engine("postgresql://" + POSTGRES)
|
|
|
+Session = sessionmaker(bind=engine)
|
|
|
+
|
|
|
+
|
|
|
+def init_db():
|
|
|
+ ModelBase.metadata.create_all(engine)
|
|
|
+
|
|
|
+
|
|
|
+@contextmanager
|
|
|
+def session_scope():
|
|
|
+ """Provide a transactional scope around a series of operations."""
|
|
|
+ session = Session()
|
|
|
+ try:
|
|
|
+ yield session
|
|
|
+ session.commit()
|
|
|
+ except:
|
|
|
+ session.rollback()
|
|
|
+ raise
|
|
|
+ finally:
|
|
|
+ session.close()
|