You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从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')
      

修复后的完整代码示例:

# 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:15:47