Files
quanxiel/quantitative_data/config.py
T

60 lines
2.3 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.
"""
量化数据库配置文件
敏感信息(数据库密码、API Token)通过环境变量管理:
- QUANT_DB_PASSWORD : 数据库密码
- TUSHARE_TOKEN : Tushare API Token
设置方式:
Windows: set QUANT_DB_PASSWORD=your_password && set TUSHARE_TOKEN=your_token
Linux: export QUANT_DB_PASSWORD=your_password && export TUSHARE_TOKEN=your_token
也可创建 .env 文件(参考 .env.example
"""
import os
from pathlib import Path
from urllib.parse import quote_plus
# 加载 .env 文件中的环境变量
_LOADED = False
try:
from dotenv import load_dotenv
# 使用 resolve() 获取绝对路径,避免 os.chdir() 改变工作目录后 __file__ 变为相对路径
env_path = Path(__file__).resolve().parent / ".env"
# 如果 resolve 后的路径不存在,尝试从当前文件所在目录查找
if not env_path.exists():
# 备用方案:也检查 Notebook 的当前工作目录
cwd_path = Path.cwd() / ".env"
if cwd_path.exists():
env_path = cwd_path
if env_path.exists():
load_dotenv(dotenv_path=env_path, override=True)
print(f"✓ 已加载环境变量文件: {env_path}")
_LOADED = True
else:
print(f"⚠ 未找到 .env 文件。检查路径: {Path(__file__).resolve().parent / '.env'}, 当前目录: {Path.cwd() / '.env'}")
except ImportError:
print("⚠ python-dotenv 未安装,无法自动加载 .env 文件。请手动设置环境变量或执行: pip install python-dotenv")
# PostgreSQL Docker 连接配置
_PASSWORD = os.environ.get("QUANT_DB_PASSWORD", "")
DB_CONFIG = {
"host": os.environ.get("QUANT_DB_HOST", "192.168.27.11"),
"port": int(os.environ.get("QUANT_DB_PORT", "5438")),
"database": os.environ.get("QUANT_DB_NAME", "quant_db"),
"user": os.environ.get("QUANT_DB_USER", "postgres"),
"password": _PASSWORD,
}
# 对密码进行 URL 编码(用于 SQLAlchemy 连接串),避免特殊字符导致解析错误
PASSWORD_ENCODED = quote_plus(_PASSWORD) if _PASSWORD else ""
# Tushare API Token
TUSHARE_TOKEN = os.environ.get("TUSHARE_TOKEN", "")
# 批量导入参数
BATCH_SIZE = int(os.environ.get("QUANT_BATCH_SIZE", "5000")) # 每批次插入行数
START_DATE = os.environ.get("QUANT_START_DATE", "2010-01-01") # 数据起始日期
END_DATE = os.environ.get("QUANT_END_DATE", "2025-12-31") # 数据结束日期