Как сохранить вызовы api в базе данных mysql ?
Я пытаюсь сохранить вызов API в базе данных mysql, но что-то не так с моим кодом, не знаю, что это такое.
from aliexpress_api_client import AliExpress import pymysql.cursors aliexpress = AliExpress('9420', 'bazaarmaya') data = aliexpress.get_product_list(['productId', 'productTitle', 'salePrice', 'originalPrice'], 'drones') #print(data) connection = pymysql.connect(host='localhost', user='root', password='Kradz579032!!', db='aliexpressapidb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: sql_template =""" INSERT INTO producttable (productId, productTitle, salePrice, originalPrice ) SELECT * FROM (SELECT %(productId)s, %(productTitle)s, %(salePrice)s, %(originalPrice)s) AS tmp WHERE NOT EXISTS ( SELECT productId FROM producttable WHERE productId = %(productId)s ) LIMIT 1; """ for product in data: print('%s %s %s %s' % (product['productId'], product['productTitle'], product['salePrice'], product['originalPrice'])) cursor.execute(sql_template, {product['productId'], product['productTitle'], product['salePrice'], product['originalPrice']}) connection.commit() finally: connection.close()
Что я уже пробовал:
Я пробовал спрашивать в stackoverflow, Facebook и даже пробовал другие методы, но потерпел неудачу.
Richard MacCutchan
- но что-то не так с моим кодом."
Пожалуйста, объясните, какие ошибки вы видите и где они происходят.
Member 13856665
Я запускаю это на PyCharm так что вот возвращенные сообщения об ошибках :
Ошибка:
/Пользователи/reezalaq/PycharmProjects/Aliexpress/venv/bin/python /Users/reezalaq/Downloads/newali/script.py
Обратная трассировка (самый недавний призыв последнего):
Файл "/Users/reezalaq/Downloads/newali/script.py", строка 28, в <модуле>
печать('%ы %ы %ы %ы' % (продукт['идентификатор'], продукт['productTitle'], продукт['salePrice'], продукт['originalprice это']))
TypeError: строковые индексы должны быть целыми числами
Процесс завершился с кодом выхода 1
Richard MacCutchan
Это сообщение об ошибке ясно, вам нужно использовать целые числа для значений индекса в вашем product
массив.
Member 13856665
как же так ?
Richard MacCutchan
Поскольку я понятия не имею о структуре ваших данных, я не знаю.
Member 13856665
Вот как это выглядит :
https://hastebin.com/ogexopibuv.py
Я спрашивал так много мест, но никто не смог найти решение.
Richard MacCutchan
По-моему, это похоже на JSON. Видеть 19.2. в JSON — формате JSON кодер и декодер — документации по языку Python 3.4.8 [^].
Member 13856665
он возвращает это :
{
"средства": [
{
"productTitle": "Cheerson CX-10 CX10 2.4 G Remote Control Toys 4CH 6Axis RC Quadcopter Mini RC Helicopters Radio Control Aircraft RTF Трутень",
"salePrice": "US $16.79",
"originalPrice": "us $20.99",
"productId": 32850277404
},
{
"productTitle": "оригинальный SYMA X5C RC Трутень С 2-мегапиксельной HD-камерой 2.4 G 6-осевой пульт дистанционного управления вертолетом Quadcopter или SYMA X5 Dron без камеры",
"salePrice": "us $26.69",
"originalPrice": "us $26.69",
"productId": 32851823794
},
{
"productTitle": "в наличии! Конечно H122D Х4 5.8 г FPV камеры RC Micro гоночный Трутень Quadcopter W/ 720P Camera Goggles совместимый Fatshark VS MJX B6",
"salePrice": "US $79.99",
"originalPrice": "us $159.98",
"productId": 32840152266
},
{
"productTitle": "SYMA X5UW Трутень с WiFi камерой HD 720P передача в реальном времени FPV Quadcopter 2.4 G 4CH RC вертолет дрон квадрокоптер Трутни",
"salePrice": "US $80,01",
"originalPrice": "us $89.90",
"productId": 32740736624
},
{
"productTitle": "JJRC H31 RC Трутень Водонепроницаемое сопротивление квадрокоптер вертолет без камеры или трутень с камерой HD или Трутни с камерой wifi FPV",
"salePrice": "us $31.99",
"originalPrice": "US $42.65",
"productId": 32845232075
},
{
"productTitle": "MJX Bugs 6 B6 RC Трутень 2.4 Г Безщеточный Мотор Гоночный Трутень с HD камерой FPV Quadcopter Helicopter VS BUGS 3 SYMA X8 pro X8pro",
"salePrice": "US $86.90",
"originalPrice": "us $86.90",
"productId": 32824071536
},
{
"productTitle": "квадрокоптер SYMA X5HW Трутень с камерой Wifi FPV HD Real-time 2.4 G 4CH RC Helicopter Quadcopter RC Dron Toy (X5SW Upgrade)",
"salePrice": "US $64.70",
"originalPrice": "us $81.90",
"productId": 32750186087
},
{
"productTitle": "в наличии JJRC H48 MINI 2.4 G 4CH 6 Axis 3D Flips RC Трутень Горючего rtf против Н36 Нибиру E010 для детей дети Рождественский подарок игрушки",
"salePrice": "US $12.99",
"originalPrice": "us $25.98",
"productId": 32840378148
},
{
"productTitle": "RC Трутни с hd камерой RC вертолет Складной мини Трутень FPV квадрокоптер самолет селфи Трутень Складной Трутень GW018 JY018 JD018",
"salePrice": "US $15.24",
"originalPrice": "us $25.40",
"productId": 32816636195
},
{
"productTitle": "RC Трутень с камерой HD 0.3 MP/2.0 MP RC Quadcopter 2.4 Ghz Quadrocopter FPV гоночный вертолет пульт дистанционного управления Dron Toys Dwi D4",
"salePrice": "us $27.19",
"originalPrice": "us $33.99",
"productId": 32655644460
},
{
"productTitle": "Flying Camera DM X5C-1 RC Helicopter 2.4 G 4CH 6-Axis Трутень С HD камерой X5C Quadcopter DM005 аккумулятор большой емкости Dron",
"salePrice": "US $36.90",
"originalPrice": "us $72.35",
"productId": 32619348443
},
{
"productTitle": "3MP RC Трутень Syma X5C FPV RC Quadcopter mini Трутень с камерой 2.4 G 6-осевой радиоуправляемый вертолет Трутни С самолета камеры HD дрон ",
"salePrice": "us $25.98",
"originalPrice": "us $37.11",
"productId": 32862639069
},
{
"productTitle": "MJX Bugs 6 Professional Racing RC Трутень с камерой HD 720P FPV Live Video Quadcopter RTF KEDIOR X8SW Hero 3",
"salePrice": "US $54.80",
"originalPrice": "us $107.45",
"productId": 32818024174
},
{
"productTitle": "Hubsan X4 STAR H507A App совместимый Wifi FPV RC Трутни С 720P HD камерой GPS RC Headless Quadcopter RTF с передатчиком",
"salePrice": "US $79.28",
"originalPrice": "us $79.28",
"productId
Richard MacCutchan
Да, и как я уже сказал выше, это JSON, поэтому вам нужно перейти по ссылке, которую я дал вам, чтобы десериализовать его в объекты Python.