从API获取数据写入MySQL Workbench失败,求排查脚本问题
问题排查与修复方案
你的代码存在几个核心问题,直接导致数据无法写入数据库,逐个梳理如下:
未执行数据库连接函数:
engine = make_db_connection只是将函数本身赋值给变量,没有调用函数获取实际的数据库连接引擎。必须改成:engine = make_db_connection()只有加括号执行函数,才能拿到可用的数据库连接。
未调用数据写入函数:你定义了
get_isu_worldrecord_db(engine)但全程没触发执行,等于这段写入逻辑根本没运行。在代码末尾添加调用:get_isu_worldrecord_db(engine)额外优化建议(非核心但避免后续问题):
- pandas的
append方法已被弃用,建议用pd.concat合并DataFrame:
将循环内的df_final=df_final.append(df,ignore_index=True,sort=False)替换为:df_final = pd.concat([df_final, df], ignore_index=True, sort=False) json_normalize的导入可以简化为pandas内置方法,删掉from pandas.io.json import json_normalize,将df = json_normalize(data,'results')改为:df = pd.json_normalize(data,'results')
- pandas的
修复后的完整代码示例:
# GET ALL WorldRecords from https://api.isuresults.eu/records import requests import pandas as pd from helper_db import make_db_connection # 获取数据库连接引擎 engine = make_db_connection() def get_isu_worldrecord_db(engine): URL = "https://api.isuresults.eu/records/?type=WR" df_final = pd.DataFrame() for i in range(1,20): params = {'page': i} api = requests.get(url=URL, params=params) data = api.json() df = pd.json_normalize(data,'results') df_final = pd.concat([df_final, df], ignore_index=True, sort=False) df_final = df_final.drop(['laps'], axis=1) # 可先打印数据确认API返回正常 # print(df_final.head()) df_final.to_sql("Tester", con=engine, if_exists="replace", chunksize=1000) return # 执行数据写入逻辑 get_isu_worldrecord_db(engine)
如果修复后仍有问题,建议检查helper_db.py中的make_db_connection函数,确认MySQL的主机、用户名、密码、目标库名等参数配置正确,确保连接有效。
内容的提问来源于stack exchange,提问作者Broly
相关产品推荐
相关产品推荐

