修复数据库配置:支持MySQL分字段配置

问题:config.py只处理了PINEAGENTS_DEMO_DATABASE_URL,没有处理
PINEAGENTS_MYSQL_HOST/PORT/USER/PASSWORD分字段配置,导致服务端
使用空的SQLite数据库,无法识别用户身份(园区/企业)。

修复:
- 支持MySQL分字段配置,自动构建DATABASE_URL
- 优先级:PINEAGENTS_DEMO_DATABASE_URL > MySQL分字段 > SQLite默认
- 与Redis配置方式保持一致
This commit is contained in:
Pine
2026-09-06 21:13:57 +08:00
parent f4742ffbd1
commit a8a62e5fcb
+15 -4
View File
@@ -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 对齐)
# 示例 MySQLPINEAGENTS_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(缓存/会话/限流/分布式锁),空则降级内存。
# 支持两种配置方式: