fix:修复了环境变量中的数据库账户密码无法成功导入的错误。增加相关依赖python-dotenv>=1.0.0
This commit is contained in:
@@ -8,19 +8,38 @@
|
||||
设置方式:
|
||||
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)
|
||||
也可创建 .env 文件(参考 .env.example)
|
||||
"""
|
||||
import os
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote_plus
|
||||
|
||||
# 加载 .env 文件中的环境变量
|
||||
try:
|
||||
from dotenv import load_dotenv
|
||||
env_path = Path(__file__).parent / ".env"
|
||||
if env_path.exists():
|
||||
load_dotenv(dotenv_path=env_path, override=True)
|
||||
print(f"✓ 已加载环境变量文件: {env_path}")
|
||||
else:
|
||||
print(f"⚠ 未找到 .env 文件: {env_path}")
|
||||
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": os.environ.get("QUANT_DB_PASSWORD", ""),
|
||||
"password": _PASSWORD,
|
||||
}
|
||||
|
||||
# 对密码进行 URL 编码(用于 SQLAlchemy 连接串),避免特殊字符导致解析错误
|
||||
PASSWORD_ENCODED = quote_plus(_PASSWORD) if _PASSWORD else ""
|
||||
|
||||
# Tushare API Token
|
||||
TUSHARE_TOKEN = os.environ.get("TUSHARE_TOKEN", "")
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ from psycopg2 import sql
|
||||
from psycopg2.extras import execute_values
|
||||
from sqlalchemy import create_engine
|
||||
|
||||
from config import DB_CONFIG, TUSHARE_TOKEN, BATCH_SIZE, START_DATE, END_DATE
|
||||
from config import DB_CONFIG, TUSHARE_TOKEN, BATCH_SIZE, START_DATE, END_DATE, PASSWORD_ENCODED
|
||||
|
||||
# ============================================================
|
||||
# 日志配置
|
||||
@@ -55,7 +55,7 @@ def get_sqlalchemy_engine():
|
||||
global _sqlalchemy_engine
|
||||
if _sqlalchemy_engine is None:
|
||||
db_url = (
|
||||
f"postgresql://{DB_CONFIG['user']}:{DB_CONFIG['password']}"
|
||||
f"postgresql://{DB_CONFIG['user']}:{PASSWORD_ENCODED}"
|
||||
f"@{DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}"
|
||||
)
|
||||
_sqlalchemy_engine = create_engine(db_url, pool_size=5, max_overflow=10)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
tushare>=1.4.0
|
||||
pandas>=1.5.0
|
||||
psycopg2-binary>=2.9.0
|
||||
sqlalchemy>=2.0.0
|
||||
sqlalchemy>=2.0.0
|
||||
python-dotenv>=1.0.0
|
||||
|
||||
Reference in New Issue
Block a user