Pycharm中出啊先KeyError: '2020-10-10'怎么解决啊

weixin_46788844 2020-10-11 04:06:00
import pymysql
import requests
import time
import json
import datetime

'''获取全部数据
0、新建链接、游标
关闭close
1、请求数据、转成JSON
2、数据解析(data.chinaDayAddList
data.chinaDayList)
生成dict
{'2020-09-29':{'confirm':200}}
3、数据存储
'''


# 日期标准化处理
def get_date(date):
date = '2020.' + date
date_str = time.strptime(date, "%Y.%m.%d")
date_s = time.strftime('%Y-%m-%d', date_str)
return date_s


# 建立数据库连接
def get_conn():
conn = pymysql.connect(host="localhost", user="root", password="root",
database="data_view", port=3306, unix_socket=None,
charset='utf8')
cursor = conn.cursor()
# 清空数据表,从1开始排序
cursor.execute('TRUNCATE history_data')
conn.commit()
return conn, cursor


# 关闭数据库连接
def close_conn(conn, cursor):
if cursor:
cursor.close()
if conn:
conn.close()


# 1、请求数据、转成JSON
def get_qq_data():
url = 'https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=chinaDayList,chinaDayAddList,cityStatis,nowConfirmStatis,provinceCompare'
headers = {
'user-agent': 'Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 85.0.4183.102Safari / 537.36'
}
resp = requests.get(url, headers)
data = json.loads(resp.text)
return data['data']


# 2、数据解析
def get_histroy_data(data):
# 每日病例
# data.chinaDayList
chinaDayList = data['chinaDayList']
history_dict = {}
for day_item in chinaDayList:
# 日期标准化
date = day_item['date']
date_f = get_date(date)
# 累计确诊
confirm = day_item['confirm']
# print(confirm)
# 累计治愈
heal = day_item['heal']
# 累计死亡
dead = day_item['dead']
# 现有确诊
nowConfirm = day_item['nowConfirm']
# 无症状感染者
noInfect = day_item['noInfect']
# 境外输入
importedCase = day_item['importedCase']
# print(date_f,confirm,heal,nowConfirm,noInfect,importedCase)
history_dict[date_f] = {'confirm': confirm, 'heal': heal, 'dead': dead, 'nowConfirm': nowConfirm,
'noInfect': noInfect, 'importedCase': importedCase, 'confirm_add': 0, 'heal_add': 0,
'dead_add': 0, 'infect_add': 0, 'importedCase_add': 0}
# print(history_dict)

# 每日新增病例
# data.chinaDayAddList
chinaDayAddList = data['chinaDayAddList']
for add_item in chinaDayAddList:
# print(add_item)
# 日期标准化
date = add_item['date']
date_add = get_date(date)
# 新增确诊
confirm_add = add_item['confirm']
# 新增治愈
heal_add = add_item['heal']
# 新增死亡
dead_add = add_item['dead']
# 新增无症状感染者
infect_add = add_item['infect']
# 境外输入新增
importedCase_add = add_item['importedCase']
# print(date_add,confirm_add,heal_add,dead_add,infect_add,importedCase_add)
history_dict[date_add].update(
{'confirm_add': confirm_add, 'heal_add': heal_add, 'dead_add': dead_add, 'infect_add': infect_add,
'importedCase_add': importedCase_add})
# print(history_dict)
return history_dict


# 3、数据存储
def save_histroy_data(dic):
# 创建数据库链接
conn, cursor = get_conn()

for key, val in dic.items():
insert_list = []
confirm = dic[key]['confirm']
heal = dic[key]['heal']
dead = dic[key]['dead']
nowConfirm = dic[key]['nowConfirm']
noInfect = dic[key]['noInfect']
importedCase = dic[key]['importedCase']
confirm_add = dic[key]['confirm_add']
heal_add = dic[key]['heal_add']
dead_add = dic[key]['dead_add']
infect_add = dic[key]['infect_add']
importedCase_add = dic[key]['importedCase_add']

insert_list.append(key)
insert_list.append(confirm)
insert_list.append(heal)
insert_list.append(dead)
insert_list.append(nowConfirm)
insert_list.append(noInfect)
insert_list.append(importedCase)
insert_list.append(confirm_add)
insert_list.append(heal_add)
insert_list.append(dead_add)
insert_list.append(infect_add)
insert_list.append(importedCase_add)
insert_list.append(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
print(insert_list)
insert_sql = "INSERT INTO history_data (update_time,confirm,heal,dead,nowConfirm,noInfect,importedCase,confirm_add,heal_add,dead_add,infect_add,importedCase_add,create_time) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
# print("插入数据库成功")
cursor.execute(insert_sql, insert_list)
conn.commit()

# 关闭数据库链接
close_conn(conn, cursor)
return


if __name__ == '__main__':
'''获取全部数据'''
qq_data = get_qq_data()
# print(qq_data)
dic = get_histroy_data(qq_data)
'''
for dic_item in dic.items():
print(dic_item)'''
save_histroy_data(dic)
错误:
"F:\大学\大四上\Django Web\文件\10.02\venv\Scripts\python.exe" "F:/大学/大四上/Django Web/文件/10.02/2.py"
Traceback (most recent call last):
File "F:/大学/大四上/Django Web/文件/10.02/2.py", line 160, in <module>
dic = get_histroy_data(qq_data)
File "F:/大学/大四上/Django Web/文件/10.02/2.py", line 106, in get_histroy_data
history_dict[date_add].update(
KeyError: '2020-10-10'

Process finished with exit code 1
这是为啥啊
...全文
662 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42236320 2020-12-22
  • 打赏
  • 举报
回复
同出现这种错误,楼主你解决了吗,控制台说 history[ds].update({'confirm_add':confirm,'suspect_add':suspect,'heal_add':heal,'dead_add':dead}) #更新历史新增数据 KeyError: '2020-01-20'
hoohoh 2022-04-12
  • 举报
回复
@weixin_42236320 请问你们解决了吗,我也遇到这个了

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧