我正在构建一个简单的应用程序。
我希望我的CSV中的某些值每15分钟更新一次。我想要 我的应用程序的这部分在后台运行,以防止阻止界面。
我无法以我想要的方式工作。
我的代码:
# I'm using the pandas, sched and time imports here:
#INTERFACE
@app.route("/")
def home():
s = sched.scheduler(time.time, time.sleep)
s.enter(15, 1, timer)
s.run()
return render_template("index.html")
#TIMER
def timer():
timer = 0
csv_file='C:\Python27\Walmart\sheet.csv'
print("UPDATING")
data_df = pd.read_csv(csv_file)
print("READ")
for i, row in data_df.iterrows() :
sku = data_df.iloc[i]['Walmart SKU']
print (sku)
if sku is '':
break
else:
update(sku)
print("Item Updated")
print("UPDATECOMPLETE")
home()
#UPDATE
def update(sku):
lookup=str(sku)
lookup = lookup.replace('.0', '')
product = wapy.product_lookup(lookup)
ts = time.time()
st = datetime.datetime.today().strftime('%Y-%m-%d %I:%M %p')
print (product.name)
if product.available_online is 'TRUE':
instock = 'yes'
else:
instock ='no'
quote_page = product.product_url
page = urlopen(quote_page)
soup = BeautifulSoup(page, 'html.parser')
sold_box = soup.find('a', attrs={'class': 'font-bold prod-SoldShipByMsg'})
sold = sold_box.text.strip()
left_box = soup.find('div', attrs={'class': 'prod-ProductOffer-urgencyMsg'})
left = left_box.text.strip()
if left is '':
stock=product.stock
else:
stock=left
# fields=[lookup + ',' + '$'+str(product.sale_price) + ',' + instock + ',' + stock + ',' + str(sold) + ',' + st + ',' + '$'+str(product.msrp)]
pathto_csv = 'C:\Python27\Walmart\sheet.csv'
data_df = pd.read_csv(pathto_csv)
print("CSV READ")
data_df.set_value([lookup], ['Price'], '$'+str(product.sale_price))
data_df.set_value([lookup], ['In Stock'], instock )
data_df.set_value([lookup], ['Quantity'], stock)
data_df.set_value([lookup], ['Last Update'], str(sold))
data_df.set_value([lookup], ['Min Price'], '$'+str(product.msrp))
data_df.to_csv(pathto_csv)
with open(r'sheet.csv', 'a') as f:
writer = csv.writer(f, delimiter=' ', quotechar = ' ')
writer.writerow(fields)
print(st)
print("UPDATED! 15 Minutes Have Passed!")
我有两个问题:
1。在更新我的更新中的值时,我收到此错误:
KeyError: "['879091509'] not in index"
我认为[row],[column]
会让我替换该单元格所需的值,例如:
data_df.set_value([lookup], ['Price'], '$'+str(product.sale_price))
我读到这个:
['lookup']
['Price']
替换为'$'+str(product.sale_price)
2。我无法访问我的界面。
问题:如何才能在后台运行?
答案 0 :(得分:0)
<强> Q1 强>
有两个问题:
set_value
搜索DataFrame的索引,但您的DataFrame没有索引。set_value
,但它只需要值。要修复,首先设置一个索引:
data_df = data_df.set_index('Walmart SKU')
从set_value
中删除列表:
data_df.set_value(lookup, 'Price', '$'+str(product.sale_price))
<强> Q2 强>
不够明确回答。尝试用最少的测试用例提出新问题。