2017-08-24 2 views
0

Je transmets le dictionnaire de données utiles avec ce qui suit. imprime PayloadProblème lors de l'enregistrement des données MySQL sur python à partir de l'API d'Amazon

('B01MTOV8IP', '35006', '23.95', '', 'now', 'Usually ships in 24 hours', 'https://www.amazon.com/reviews/iframe?akid=AKIAIDCPAFSAQICDTFNQ&alinkCode=xm2&asin=B01MTOV8IP&atag=reakenture-20&exp=2017-08-25T08%3A36%3A25Z&v=2&sig=QtRIZIBfjqq%252BPuYaUD%252BsoIxXSy2dRzYqCACDFm%252B%252BtV8%253D', 'CHG-GSTWL') 

Puis je reçois cette erreur:

J'ai essayé de changer les valeurs et stip la période, j'ai ajouté str (valeur) et j'ai aussi essayé de le placer dans le dictionnaire. J'ai juste besoin d'envoyer ces sku et leurs données à la base de données.

Quand je revenir à% si encore obtenir cette erreur Je reçois cette erreur:

Fichier « /usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py », ligne 36, à DefaultErrorHandler augmentation ErrorClass, errorvalue _mysql_exceptions.OperationalError: (1582, "nombre de paramètres incorrect dans l'appel à la fonction native 'IsNull'") [Finition en 3.2s avec le code de sortie 1]

I also tried 
    payload =(
    asin, 
    bsr, 
    str(selling_price_v), 
    str(listing_price_v), 
    availability_type, 
    availability, 
    reviews, 
    sku) 

MON BUT EST DE SAUVEGARDER des valeurs non nulles dans la base de données mysql.

Voici le modèle pour les types de données

class BSR(models.Model): 
    ItemSKU = models.CharField(primary_key=True,max_length=200, blank=True) 
    list_price = models.DecimalField(max_digits=6, blank=True, decimal_places=2) 
    selling_price = models.DecimalField(max_digits=6, blank=True, decimal_places=2) 
    availability = models.CharField(max_length=200, blank=True) 
    Best_Sellers_Rank = models.IntegerField(max_length=200, blank=True) 
    AISN = models.CharField(max_length=200, blank=True) 

    class Meta: 
     ordering = ['ItemSKU'] 
     verbose_name_plural = "BSR TEMP DATA" 

    def __str__(self): 
     return self.ItemSKU 

CODE

for sku in set(SKUS): 
    payload = [] 
    try: 
     time.sleep(2) 
     product = amazon.lookup(ItemId=sku, IdType="SKU",SearchIndex='All') 
     bsr = product.sales_rank 
     print bsr 
    except Exception as e: 
     bsr='' 
     print bsr 
    # try: 
    #  fprice = product.formatted_price#.strip("$").strip(".") 
    #  print fprice 
    # except Exception as e: 
    #  fprice = "n/a" 
    #  print fprice 
    #  print e 
    try: 
     asin = product.asin#.strip(".") 
     print asin 
    except Exception as e: 
     asin = "" 
     print asin 

    try: 
     listing_price = product.listing_price 
     # print selling_price[0]#type 
     print listing_price[0]#price 
     listing_price_v = listing_price[0] 
    except Exception as e: 
     listing_price_v = "" 
     print listing_price_v 
    # try: 
    #  price = product.price 
    #  print price#type 
    #  # print selling_price[1]#price 
    # except Exception as e: 
    #  price = "n/a" 
    #  print price 
    #  print e 
    try: 
     reviews = product.reviews[1] 
     print reviews 
    except Exception as e: 
     reviews = "" 
     print reviews 

    try: 
     availability_type = product.availability_type 
     print availability_type 
    except Exception as e: 
     availability_type = "" 
     print availability_type 
    try: 
     availability = product.availability 
     # if 
     print availability 
    except Exception as e: 
     availability = "" 
     print availability 

    try: 
     selling_price = product.price_and_currency 
     selling_price_v = selling_price[0]#type 
     print selling_price_v 
    except Exception as e: 
     selling_price = "" 

    conn = MySQLdb.connect(host="serveraddress", user="un", passwd="pw", db="API") 
    payload =[ 
    asin, 
    bsr, 
    str(selling_price_v).replace('.',''), 
    str(listing_price_v).replace('.',''), 
    availability_type, 
    availability, 
    reviews, 
    sku] 
    print payload 
    # conn = sqlite3.connect('skubsr.db') 
    c = conn.cursor(as_dict=True) 
    c.execute("""UPDATE webservice_bsr 
    SET 
    AISN = IsNull(@AISN, %s), 
    Best_Sellers_Rank = IsNull(@Best_Sellers_Rank, %s) 
    selling_price = IsNull(@selling_price, %s), 
    listing_price = IsNull(@listing_price, %s), 
    availability_type = IsNull(@availability_type, %s), 
    availability = IsNull(@availability, %s), 
    reviews = IsNull(@reviews, %s) 
    WHERE ItemSKU = %s""", payload) 
    conn.commit() 

Répondre