
本文用Python示例说明如何调用电价API,获取工商业分时电价JSON,并把峰谷时段、电价、单位和更新时间解析成系统可用的数据结构。同样的接入思路也适用于现货电价API、日前电价API和实时电价API。
这篇文章用一个简化示例说明如何用Python调用电价API,获取某省某月的工商业分时电价数据,并把返回JSON转换为系统可用的结构。
说明:以下接口地址、token和数据均为示例。正式接入时应以实际API文档为准。
请求示例
bash
import requests
API_BASE = "https://api.example.com/v1"
API_KEY = "YOUR_TRIAL_API_KEY"
def get_tou_price(province, month, voltage_level="10kV"):
url = f"{API_BASE}/electricity-prices/tou"
params = {
"province": province,
"month": month,
"voltageLevel": voltage_level
}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "application/json"
}
response = requests.get(url, params=params, headers=headers, timeout=10)
response.raise_for_status()
return response.json()
if __name__ == "__main__":
data = get_tou_price("浙江", "2026-06")
print(data)
返回JSON示例
bash
{
"province": "浙江",
"month": "2026-06",
"voltageLevel": "10kV",
"periods": [
{
"periodType": "peak",
"startTime": "09:00",
"endTime": "11:00",
"price": 1.0243,
"unit": "CNY/kWh"
},
{
"periodType": "valley",
"startTime": "00:00",
"endTime": "06:00",
"price": 0.3125,
"unit": "CNY/kWh"
}
],
"updatedAt": "2026-06-18T10:00:00+08:00"
}
转成字典方便查询
如果业务系统要按时间匹配电价,可以先把时段转换成内部结构:
bash
from datetime import datetime
def parse_time(t):
return datetime.strptime(t, "%H:%M").time()
def normalize_periods(api_data):
result = []
for item in api_data["periods"]:
result.append({
"type": item["periodType"],
"start": parse_time(item["startTime"]),
"end": parse_time(item["endTime"]),
"price": float(item["price"]),
"unit": item["unit"]
})
return result
错误处理
正式接入时不要只写requests.get()。建议处理这些情况:
bash
def safe_get_tou_price(province, month):
try:
return get_tou_price(province, month)
except requests.exceptions.Timeout:
return {"error": "REQUEST_TIMEOUT"}
except requests.exceptions.HTTPError as e:
status = e.response.status_code
if status == 404:
return {"error": "PRICE_NOT_FOUND"}
if status == 429:
return {"error": "RATE_LIMITED"}
return {"error": "HTTP_ERROR", "status": status}
接入建议
- 先用测试key验证字段。
- 对比当前人工维护数据。
- 建立本地缓存,避免每次页面展示都实时调用。
- 记录
updatedAt,用于判断数据是否已更新。 - 把错误码写入日志,便于排查。
常见问题
Q:Python调用电价API需要哪些参数?
A:最常见参数包括省份、月份、电压等级和数据类型。如果调用现货电价API,还需要市场、日期、价格类型、时间粒度或节点信息。
Q:电价API返回JSON后应该如何存储?
A:建议把原始JSON和标准化后的业务表同时保存。原始JSON便于追溯,标准化表便于EMS、储能测算、售电分析和报表系统查询。
Q:电价API调用失败时应该直接报错吗?
A:生产系统不建议直接把错误暴露给用户。应区分超时、频率限制、参数错误、数据未发布和省份不支持,并结合缓存、重试和更新日志处理。