Confused compare function :)
Anatoli Hristov
tolidtm at gmail.com
Fri Dec 7 08:36:23 EST 2012
>> Calling it 'found' is misleading, because it's True only if it updated.
>> If it found a match but didn't update, 'found' will still be False.
>> Using a loop within a loop like this could be the cause of your
>> problem. It's certainly not the most efficient way of doing it.
>
> I will keep you posted THANK YOU
And here is my final code -- I hope you will like it a little more :)
def Change_price(): # Changes the price in the DB if the price in the
CSV is changed
TotalUpdated = 0 # Counter for total updated
TotalSKUNotFound = 0 # Total SKU from the DB coresponds to the one
in the CSV
TotalSKUinDB = 0
found = None
for row in PRODUCTSDB:
TotalSKUinDB +=1
db_sku = row["sku"].lower()
db_price = float(row["price"])
if CompareWithCSV(db_sku, db_price) == True:
TotalUpdated +=1
else:
TotalSKUNotFound +=1
Update_SQL_stock(db_sku)
WriteLog(db_sku, row["product_id"])
print "Total updated: %s" % TotalUpdated
print"Total not found with in the distributor: %s" % TotalSKUNotFound
print "Total products in the DB %s" % TotalSKUinDB
def CompareWithCSV(db_sku, db_price):
try:
for x in pricelist:
try:
csv_price = x[6]
csv_price = csv_price.replace(",",".")
csv_price = float(csv_price)
csv_new_price = csv_price*1.10
csv_sku = x[4].lower()
csv_stock = int(x[7]) # I used this as normally I used
stock in the condition
if len(db_sku) != 0 and db_sku == csv_sku and csv_stock > 0:
print db_sku, csv_price, db_price, csv_new_price
Update_SQL(csv_new_price, db_sku)
return True
except (IndexError, ValueError, TypeError, db_sku): # I
have a lot of index error in the CSV (empty fields) and the loop gives
"index error" I don't care about them
WriteErrorLog("Error with CSV file loop: ", db_sku)
except IndexError:
WriteErrorLog("Error with CSV file loop: ", db_sku)
return False
More information about the Python-list
mailing list