35 lines
1007 B
Python
35 lines
1007 B
Python
import mysql.connector
|
|
from flask import current_app, g
|
|
from mysql.connector import pooling
|
|
|
|
# Optional: Use a pool if desired
|
|
def init_db_pool():
|
|
return pooling.MySQLConnectionPool(
|
|
pool_name="mypool",
|
|
pool_size=5,
|
|
pool_reset_session=True,
|
|
host=current_app.config['MYSQL_HOST'],
|
|
user=current_app.config['MYSQL_USER'],
|
|
password=current_app.config['MYSQL_PASSWORD'],
|
|
database=current_app.config['MYSQL_DATABASE']
|
|
)
|
|
|
|
def get_db():
|
|
if 'db' not in g:
|
|
if 'db_pool' not in current_app.config:
|
|
current_app.config['db_pool'] = init_db_pool()
|
|
g.db = current_app.config['db_pool'].get_connection()
|
|
return g.db
|
|
|
|
def close_db(e=None):
|
|
db = g.pop('db', None)
|
|
if db is not None:
|
|
try:
|
|
db.close() # returns connection to the pool
|
|
except Exception as err:
|
|
print(f"[DB Cleanup] Failed to close DB connection: {err}")
|
|
|
|
|
|
def init_app(app):
|
|
app.teardown_appcontext(close_db)
|