Python MySQL增量但不插入

时间:2017-03-16 19:04:41

标签: python mysql

简而言之,我有一个脚本让我们的零售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

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)