From a8a62e5fcb1e556afe85db673e2d6aed93e24e16 Mon Sep 17 00:00:00 2001 From: Pine Date: Sun, 6 Sep 2026 21:13:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=9A=E6=94=AF=E6=8C=81MySQL=E5=88=86?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:config.py只处理了PINEAGENTS_DEMO_DATABASE_URL,没有处理 PINEAGENTS_MYSQL_HOST/PORT/USER/PASSWORD分字段配置,导致服务端 使用空的SQLite数据库,无法识别用户身份(园区/企业)。 修复: - 支持MySQL分字段配置,自动构建DATABASE_URL - 优先级:PINEAGENTS_DEMO_DATABASE_URL > MySQL分字段 > SQLite默认 - 与Redis配置方式保持一致 --- app/config.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) 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(缓存/会话/限流/分布式锁),空则降级内存。 # 支持两种配置方式: