2016-10-25 2 views
0

Я новичок в python и пытаюсь понять, как вставить JSON в таблицу MySQL.Вставка объекта JSON в MySQL с использованием Python

Как я могу вставить свой объект JSON в MySQL с помощью Python?

Вот код, который я использую

import requests 
import urllib.request 
import json 
import pymysql 

con = pymysql.connect(host = 'localhost',user = 'root',passwd = 'root',db = 'micro') 
cursor = con.cursor() 
url = 'https://api.amazon.com/v1/products(onlineAvailability=true)?pageSize=100&show=upc,sku,salePrice&page=45&callback=JSON_CALLBACK&format=json' 
urllib.request.urlopen(url).read() 
response = urllib.request.urlopen(url).read() 
json_obj = str(response, 'utf-8') 

cursor.execute("INSERT INTO bestb (sku, upc, salePrice) VALUES (%s,%s,%s)", (sku, upc, salePrice)) 
con.commit() 
con.close() 

print (json_obj) 

вот JSON, что я пытаюсь разобрать.

"products": [ 
    { 
     "upc": "715187763623", 
     "sku": 1833591, 
     "salePrice": 13.99 
    }, 
    { 
     "upc": "8809269504036", 
     "sku": 26220187, 
     "salePrice": 16.99 
    } 
    ] 
}) 

Заранее спасибо.

+0

'json_obj = json.loads (response.decode ('UTF-8')) 'и то вы можете получить 'json_obj [" products "] [0] [" upc "]' – furas

+0

@furas Я получаю эту ошибку \ Python35-32 \ lib \ json \ decoder.py ", строка 339, в декоде obj , end = self.raw_decode (s, idx = _w (s, 0) .end()) Файл «C: \ Users \ MTA \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ json \ decoder. py ", строка 357, в raw_decode Повысить JSONDecodeError (" Ожидающее значение ", s, err.value) из None json.decoder.JSONDec odeError: Ожидающее значение: строка 1 столбец 1 (char 0) – Burak

+0

какая ошибка? Добавить вопрос. – furas

ответ

1

Используйте json.loads(string), чтобы преобразовать строку json в объект Python. И тогда вы можете использовать его как обычный словарь и список

BTW: у вас есть неправильный JSON в вашем примере

response = b'''{"products": [ 
    { 
     "upc": "715187763623", 
     "sku": 1833591, 
     "salePrice": 13.99 
    }, 
    { 
     "upc": "8809269504036", 
     "sku": 26220187, 
     "salePrice": 16.99 
    } 
    ] 
}''' 

json_obj = json.loads(response.decode('utf-8')) 

#print(json_obj["products"][0]["upc"]) 

for product in json_obj["products"]: 
    print("upc:", product["upc"]) 
    print("sku:", product["sku"]) 
    print("salePrice:", product["salePrice"]) 
    print('---') 
    cursor.execute("INSERT INTO bestb (sku, upc, salePrice) VALUES (%s,%s,%s)", (product["sku"], product["upc"], product["salePrice"])) 
+0

не смог вставить в mysql. вот ошибка, поднять JSONDecodeError («Ожидающее значение», s, err.value) из None json.decoder.JSONDecodeError: Ожидающее значение: строка 1 столбец 1 (char 0) – Burak

+0

снова та же проблема - я не знаю, почему но вы неправильно создали JSON. В вашем примере пропустите '{' при запуске. – furas

+0

кстати. запустите ваш url без 'callback = JSON_CALLBACK' - он не дает результата JSON, а javascript-код с функцией' JSON_CALLBACK() 'и с JSON в качестве аргумента функции. – furas

Смежные вопросы