40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""
|
|
Database Configuration for OCR Application
|
|
Using Flask-SQLAlchemy with MySQL (PyMySQL driver)
|
|
"""
|
|
|
|
import os
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
|
|
db = SQLAlchemy()
|
|
|
|
# Database configuration
|
|
DB_CONFIG = {
|
|
'host': os.environ.get('DB_HOST', 'localhost'),
|
|
'port': os.environ.get('DB_PORT', '3306'),
|
|
'database': os.environ.get('DB_NAME', 'ocr_db'),
|
|
'user': os.environ.get('DB_USER', 'ocr_user'),
|
|
'password': os.environ.get('DB_PASSWORD', 'ocr_password123')
|
|
}
|
|
|
|
def get_database_uri():
|
|
"""Generate SQLAlchemy database URI"""
|
|
return f"mysql+pymysql://{DB_CONFIG['user']}:{DB_CONFIG['password']}@{DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}?charset=utf8mb4"
|
|
|
|
def init_db(app):
|
|
"""Initialize database with Flask app"""
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = get_database_uri()
|
|
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
|
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
|
|
'pool_recycle': 3600,
|
|
'pool_pre_ping': True
|
|
}
|
|
|
|
db.init_app(app)
|
|
|
|
with app.app_context():
|
|
db.create_all()
|
|
print(f"✓ Database connected: {DB_CONFIG['database']}@{DB_CONFIG['host']}")
|
|
|
|
return db
|