""" 应用配置模块 - 集中管理所有配置项,支持多环境切换 - 通过 python-dotenv 自动加载 .env 文件中的环境变量 - 敏感信息全部从环境变量读取,绝不硬编码 """ import os from dotenv import load_dotenv # 自动加载项目根目录下的 .env 文件 load_dotenv() class Config: """基础配置类(开发/生产通用)""" # Flask 会话加密密钥,用于 cookie 签名和 CSRF 保护 SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-prod') # 数据库连接字符串,优先读取环境变量,回退到本地 SQLite SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'sqlite:///app.db') # 关闭 SQLAlchemy 事件追踪,避免不必要的内存开销和警告 SQLALCHEMY_TRACK_MODIFICATIONS = False # 是否打印 SQL 语句(开发调试时可设为 True,生产环境务必关闭) SQLALCHEMY_ECHO = False # 数据库引擎高级选项(主要针对 MySQL/PostgreSQL 连接池) SQLALCHEMY_ENGINE_OPTIONS = { # 连接池常驻连接数 'pool_size': int(os.environ.get('DB_POOL_SIZE', 10)), # 连接最大存活时间(秒),防止数据库端主动断开空闲连接 'pool_recycle': 3600, # 每次从池中取出连接前先 ping 一下,避免拿到已断开的死连接 'pool_pre_ping': True, }