SQLAlchemy
Multithreading
## This is a global util file
import os
from contextlib import contextmanager
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from api.config import db_username, db_password, db_private_ip, db_database_name
DB_CREDENTIALS = f"{db_username}:{db_password}@{db_private_ip}:3306/{db_database_name}"
def create_engine_and_session():
# Ensure pymysql is installed
db_uri = f"mysql+pymysql://{DB_CREDENTIALS}"
new_engine = create_engine(db_uri, echo=False)
new_session = sessionmaker(autocommit=False,
autoflush=False,
bind=new_engine)
return new_engine, new_session
current_engine, Session = create_engine_and_session()
@contextmanager
def session_scope():
session = Session()
try:
yield session
session.commit()
except:
session.rollback()
finally:
session.close()Enums
Base Class
Foreign Keys
Datetime/Timestamp Column
Useful SQLAlchemy Utility Functions
Last updated