简而言之,我有一个脚本让我们的零售UPC比较价格。
查询不会插入数据,但会增加ID号(在操作中没有数据)。当我粘贴查询并将其复制并粘贴到MySQL中时,它会成功粘贴。
操作步骤:
从upc.txt
获取UPC在网站上比较
获取价格和网站(网站包含推荐链接(等待实际链接)
发送到数据库
没有错误显示 - 只是它已成功插入。没有插入实际数据 - 唯一改变的是操作中的自动增量ID。
旁注,这完全是一个草案。我意识到SQL注入是开放的。
import urllib
import re
import MySQLdb
import requests
upcfile = open("upc.txt")
upcslist = upcfile.read()
newupclist = upcslist.split("\n")
conn = MySQLdb.connect(host="127.0.0.1",user="root",passwd="",db="Items")
i=0
while i < len(upcslist):
url = "https://www.(REMOVED).com/search"+newupclist[i]+"?view=list"
htmlfile = urllib.urlopen(url)
htmltext = htmlfile.read()
regex = '<td class="price-column">(.+?)</td>'
pattern = re.compile(regex)
price = re.findall(pattern,htmltext)
itemLinkRegex = '<td class="link-column"><a href="(.+?)" target="_blank">'
itemLinkPattern = re.compile(itemLinkRegex)
itemLink = re.findall(itemLinkPattern,htmltext)
p=0
try:
while p <len(price):
try:
r = requests.get(itemLink[p], allow_redirects=False)
itemLinkFormat = r.headers['Location']
except:
itemLinkFormat = itemLink[p]
pass
#print "Sent to Database Competitor Price: UPC ["+newupclist[i]+"] - Price: ", price[p]+" Item URL: ", itemLinkFormat
pre = ''.join(price[p].split('$', 1))
priceformat = ''.join(pre.split(',', 1))
skuNumber = newupclist[i]
try:
query = "INSERT INTO Entry (SKU, Price, Item_link) VALUES ("
query = query+"'"+skuNumber+"','"+priceformat+"','"+itemLinkFormat+"')"
print query
x = conn.cursor()
x.execute(query)
row = x.fetchall()
except:
print "Error, Not a valid number to enter into database."
pass
p+=1
p+=1
i+=1
except:
pass
i+=1
答案 0 :(得分:1)
不知道为什么要fetchAll
,尝试con.commit()
然后cur.rowcount
检查受影响的行。
此外,你的捕获可能是这样的
except cur.Error, e:
if con:
con.rollback()
print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)