Files
wecom-ai-assistant/backend/config/settings.py
bujie9527 b715755b76
Some checks failed
Build and Deploy / test-backend (push) Has been cancelled
Build and Deploy / build-backend (push) Has been cancelled
Build and Deploy / build-admin (push) Has been cancelled
Deploy to Production / build-backend (push) Has been cancelled
Deploy to Production / deploy (push) Has been cancelled
feat: backend env config upgrade - multi-env (dev/prod), DB_* support, Docker compatible
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 12:07:02 +08:00

49 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
统一配置加载环境变量优先fallback 到 .env无 DATABASE_URL 时按 DB_* 拼接。
支持多环境dev/prod、容器DB_HOST=db、向后兼容。
"""
import os
from pathlib import Path
# 环境变量优先fallback 到 .env不覆盖已存在的系统变量
def _load_dotenv():
try:
from dotenv import load_dotenv
except ImportError:
return
env = os.getenv("ENV", "").lower()
base = Path(__file__).resolve().parent.parent
if env == "prod":
load_dotenv(base / ".env.prod", override=False)
elif env == "dev":
load_dotenv(base / ".env.dev", override=False)
load_dotenv(base / ".env", override=False)
_load_dotenv()
def build_database_url_async() -> str:
"""拼接异步数据库 URLpostgresql+asyncpg"""
user = os.getenv("DB_USER", "wecom")
password = os.getenv("DB_PASSWORD", "password")
host = os.getenv("DB_HOST", "localhost")
port = os.getenv("DB_PORT", "5432")
db = os.getenv("DB_NAME", "wecom_ai")
return f"postgresql+asyncpg://{user}:{password}@{host}:{port}/{db}"
def build_database_url_sync() -> str:
"""拼接同步数据库 URLpostgresqlAlembic/psycopg2"""
user = os.getenv("DB_USER", "wecom")
password = os.getenv("DB_PASSWORD", "password")
host = os.getenv("DB_HOST", "localhost")
port = os.getenv("DB_PORT", "5432")
db = os.getenv("DB_NAME", "wecom_ai")
return f"postgresql://{user}:{password}@{host}:{port}/{db}"
# 优先使用环境变量,否则按 DB_* 拼接(向后兼容)
DATABASE_URL: str = os.getenv("DATABASE_URL") or build_database_url_async()
DATABASE_URL_SYNC: str = os.getenv("DATABASE_URL_SYNC") or build_database_url_sync()