在处理来自网站的json数据并将其添加到mysql数据库时,我遇到了一个错误

2024-09-22 16:23:31 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在运行我的python文件从api获取数据,并将其从json放入mysql数据库,我使用了之前的代码,在数据从何处传输时,我更改了id名称以确保它们是正确的

the error is Traceback (most recent call last): File "bne.py", line 35, in for element in response_data['flightData']: TypeError: list indices must be integers or slices, not str

这是我的密码

import urllib.parse
import requests
import mysql.connector
import pandas as pd


mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="*****",
  database="flightdata"
)

mycursor = mydb.cursor()




url = 'https://www.bne.com.au/sites/default/files/00API-Today.json?nocache=true'


#address = 'true'
#url = main_api + urllib.parse.urlencode({address: address})

response_data = requests.get(url).json()
# empty list for holding all the data
data = []
for element in response_data['flightData']:
    origin = ['Brisbane']
    flight_id = element['id']
    airline = element['AirlineName']
    destination = element['ToFrom']
    flightNumbers = element['FlightNumber']
    scheduledTime = element['ScheduledTimeTime']
    estimatedTime = element['EstimatedTimeTime']
    scheduledDate = element['ScheduledTimeEuro']
    latestTime = element['EstimatedTimeTime']
    status = element['status']
    print (origin, flight_id, flightNumbers, airline, destination, scheduledTime, scheduledDate, latestTime, status)

    sql = "INSERT INTO flightinfo (origin, id, airline, destinations, flightNumbers, scheduledTime, estimatedTime, scheduledDate, latestTime, status) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"

    val = ('sydney', flight_id, airline, " ".join(destination), ", ".join(flightNumbers), scheduledTime, estimatedTime,
            scheduledDate, latestTime, status)
    data.append(val)


# doing a batch insert
mycursor.executemany(sql, data)

#mydb.commit()

print(mycursor.rowcount, "was inserted.")


#print(val)
#print(pd.datetime.now().date())

Tags: inimportidjsonfordatastatusmysql
2条回答

response\u data是一个包含您要查找的dict的列表。 如果您在列表中列出:

for element in response_data:
    airline = element['Airline']

元素应该包含所需的dict

试试这个

for element in response_data:
   ....

而不是

for element in response_data['flightData']:
   ...

来自json的响应是listdict而不是dict

相关问题 更多 >