diff --git a/app/config.py b/app/config.py index 10586c8..3cb3c9e 100644 --- a/app/config.py +++ b/app/config.py @@ -43,11 +43,22 @@ for _d in (DATA_DIR, LOG_DIR, FILES_DIR, KEYS_DIR, PROMPTS_DIR, UPLOADS_DIR): _d.mkdir(parents=True, exist_ok=True) # 数据库连接(异步)。开发默认 SQLite+aiosqlite;生产用 MySQL+asyncmy(环境变量覆盖)。 +# 支持两种配置方式: +# 1. PINEAGENTS_DEMO_DATABASE_URL 完整连接串(优先级最高) +# 2. PINEAGENTS_MYSQL_HOST/PORT/USER/PASSWORD/DB 分字段配置(与 .env 对齐) # 示例 MySQL:PINEAGENTS_DEMO_DATABASE_URL=mysql+asyncmy://user:pass@127.0.0.1:3306/opc?charset=utf8mb4 -DATABASE_URL = os.environ.get( - "PINEAGENTS_DEMO_DATABASE_URL", - f"sqlite+aiosqlite:///{DATA_DIR / 'app.db'}", -) +_mysql_host = os.environ.get("PINEAGENTS_MYSQL_HOST", "") +_mysql_port = os.environ.get("PINEAGENTS_MYSQL_PORT", "3306") +_mysql_user = os.environ.get("PINEAGENTS_MYSQL_USER", "") +_mysql_password = os.environ.get("PINEAGENTS_MYSQL_PASSWORD", "") +_mysql_db = os.environ.get("PINEAGENTS_MYSQL_DB", "opc") +if os.environ.get("PINEAGENTS_DEMO_DATABASE_URL"): + DATABASE_URL = os.environ["PINEAGENTS_DEMO_DATABASE_URL"] +elif _mysql_host: + _auth = f"{_mysql_user}:{_mysql_password}@" if _mysql_user else "" + DATABASE_URL = f"mysql+asyncmy://{_auth}{_mysql_host}:{_mysql_port}/{_mysql_db}?charset=utf8mb4" +else: + DATABASE_URL = f"sqlite+aiosqlite:///{DATA_DIR / 'app.db'}" # Redis(缓存/会话/限流/分布式锁),空则降级内存。 # 支持两种配置方式: