1564c8766d
- Modified load_dotenv() calls in multiple files to include override=True, ensuring that .env variables can replace existing environment variables. - Updated ota_storage.py to use default values for OTA upload directories, improving clarity and maintainability. - Enhanced get_ota_upload_dir() function to read environment variables dynamically, ensuring accurate directory paths based on the current environment.
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from sqlalchemy import create_engine
|
||
from sqlalchemy.ext.declarative import declarative_base
|
||
from sqlalchemy.orm import sessionmaker
|
||
import os
|
||
from dotenv import load_dotenv
|
||
|
||
# Load environment variables(override=True:.env 覆盖已有环境变量,避免系统里 DEBUG=true 导致与 .env 中 DEBUG=False 冲突)
|
||
load_dotenv(override=True)
|
||
|
||
# Database configuration
|
||
DATABASE_HOST = os.getenv("DATABASE_HOST", "localhost")
|
||
DATABASE_PORT = os.getenv("DATABASE_PORT", "3306")
|
||
DATABASE_NAME = os.getenv("DATABASE_NAME", "audio")
|
||
DATABASE_USER = os.getenv("DATABASE_USER", "root")
|
||
DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD", "root123")
|
||
|
||
# Create database URL (only charset parameter)
|
||
DATABASE_URL = f"mysql+pymysql://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}?charset=utf8mb4"
|
||
|
||
# Create engine with additional connection arguments
|
||
# Use connect_args for parameters that shouldn't be in the URL
|
||
engine = create_engine(
|
||
DATABASE_URL,
|
||
echo=os.getenv("DEBUG", "False") == "True",
|
||
connect_args={}
|
||
)
|
||
|
||
# Create session factory
|
||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||
|
||
# Base class for models
|
||
Base = declarative_base()
|
||
|
||
|
||
def get_db():
|
||
"""Database session dependency"""
|
||
db = SessionLocal()
|
||
try:
|
||
yield db
|
||
finally:
|
||
db.close()
|