Я анализирую ответ JSON от Yelp:

{
  "businesses": [
    {
      "id": "gaumont-wilson-toulouse-2",
      "name": "Gaumont Wilson",
      "city": "Toulouse"           
       }
    {
      "id": "la-cinémathèque-de-toulouse-toulouse",
      "name": "La Cinémathèque de Toulouse",
      "city": "Toulouse"
       }
    {
      "id": "abc-toulouse",
      "name": "ABC",
      "city": "Toulouse"
       }
  ]
}

И я пишу свой код Python:

for element in response_data['businesses']:
    SQL_ID = element['id']
    SQL_Name = element['name']
    SQL_City = element['city']
    cursor.execute("INSERT INTO Yelp (ID, Name, City) values (?,?,?)", (SQL_ID,SQL_Name,SQL_City))
    connection.commit()

Но в результате Python просто пропустит последний из бизнесов, а не первые два:

enter image description here

Почему?

-1
Francesco Mantovani 28 Май 2017 в 12:28

2 ответа

Лучший ответ

Вы загрузили JSON, используя json.loads()? Если вы этого не сделали, попробуйте следующее.

import json

reponse_data_json = json.loads(response_data)
for element in response_data_json['businesses']:
    SQL_ID = element['id']
    SQL_Name = element['name']
    SQL_City = element['city']
    cursor.execute("INSERT INTO Yelp (ID, Name, City) values (?,?,?)", (SQL_ID,SQL_Name,SQL_City))
    connection.commit()
1
olisch 28 Май 2017 в 09:38

Ваши данные не являются допустимым форматом json, я делаю небольшое изменение, чтобы добавить ',' после каждого {}. затем вы можете получить все, как показано ниже, код, протестированный под python 3.6

 data =  {
  "businesses": [
     {
       "id": "gaumont-wilson-toulouse-2",
       "name": "Gaumont Wilson",
       "city": "Toulouse"           
     },

     {
       "id": "la-cinémathèque-de-toulouse-toulouse",
       "name": "La Cinémathèque de Toulouse",
       "city": "Toulouse"
      },
    {
       "id": "abc-toulouse",
       "name": "ABC",
       "city": "Toulouse"
       },
  ]
}

 jsonobject = json.dumps(data)

 jsonobjectToString = json.loads(jsonobject)
 for resp in jsonobjectToString['businesses']:
     print(resp['id'])
     print(resp['name'])
     print(resp['city'])

=======

  gaumont-wilson-toulouse-2
  Gaumont Wilson
  Toulouse
  la-cinémathèque-de-toulouse-toulouse
  La Cinémathèque de Toulouse
  Toulouse
  abc-toulouse
  ABC
  Toulouse
0
xiyurui 31 Май 2017 в 08:42