get_calendar_by_date
函数现在具备了完整的智能查询功能:
calendar_info
表中查找指定日期的黄历信息用户请求日期 → 查询数据库 → 找到数据? → 是 → 返回数据
↓
否
↓
调用外部API → 成功? → 是 → 保存到数据库 → 返回数据
↓
否
↓
返回错误信息
从聚合数据黄历API获取指定日期的黄历信息。
参数:
yangli_date (date)
: 阳历日期返回:
Optional[dict]
: API返回的黄历信息,失败时返回None将API返回的黄历信息保存到数据库。
参数:
api_data (dict)
: API返回的黄历信息数据返回:
Optional[CalendarInfo]
: 保存后的黄历信息对象,失败时返回None新增 calendar_config.py
配置文件,集中管理API相关配置:
CALENDAR_API_CONFIG = {
'url': 'http://v.juhe.cn/laohuangli/d',
'key': 'your-api-key-here',
'timeout': 10,
'retry_times': 3
}
外部API返回的数据格式与数据库字段的映射关系:
API字段 | 数据库字段 | 说明 |
---|---|---|
yangli |
yangli |
阳历日期 |
yinli |
yinli |
阴历日期 |
wuxing |
wuxing |
五行 |
chongsha |
chongsha |
冲煞 |
baiji |
baiji |
彭祖百忌 |
jishen |
jishen |
吉神宜趋 |
yi |
yi |
宜 |
xionshen |
xiongshen |
凶神宜忌 (注意字段名差异) |
ji |
ji |
忌 |
函数包含完整的错误处理机制:
from app.core.data_parse.calendar import get_calendar_by_date
# 查询指定日期的黄历信息
result = get_calendar_by_date("2025-08-24")
if result['return_code'] == 200:
calendar_data = result['result']
print(f"阳历: {calendar_data['yangli']}")
print(f"阴历: {calendar_data['yinli']}")
print(f"宜: {calendar_data['yi']}")
print(f"忌: {calendar_data['ji']}")
else:
print(f"查询失败: {result['error']}")
运行以下测试文件验证功能:
# 测试基本功能
python test_calendar_function.py
# 测试API集成功能
python test_calendar_api_integration.py
确保安装了以下Python包:
pip install requests sqlalchemy