我对一段python代码有个奇怪的问题。你知道吗
其工作原理: 1输入条形码(目前为硬编码); 2在本地mysqldb中查找条形码,如果没有找到,则通过datakick的api查找条形码,如果也没有找到,则执行步骤3 三。我想将条形码添加到本地mysqldatabase并请求一些输入。你知道吗
现在的问题是:它有效!只要您填写naamProduct
的数字。如果您使用字母(例如,我填写Bla作为产品名),我会得到一个奇怪的SQL错误(_mysql_exceptions.OperationalError: (1054, "Unknown column 'Bla' in 'field.list'")
我已经检查了mysql中的表,类型都可以。名称应以文本结尾的表。我还尝试了一个硬编码字符串,它工作得很好。从mysql控制台使用sql查询也可以很好地工作。我猜输入部分出了问题,但我不知道是什么。你知道吗
(我知道,除了一些例外,代码仍然不是很整洁;)一步一步地工作)
`
def barcodeFunctie(sql):
con = mdb.connect ('localhost', 'python', 'python', 'stock')
cur = con.cursor()
cur.execute(sql)
ver = cur.fetchone();
con.commit()
con.close()
return ver
#barcode = '8710624957278'
#barcode = '2147483647'
barcode = '123'
#zoeken op barcode. Barcode is ook de sleutel in de tabel.
sql = "select * from Voorraad where Id=%s" % barcode
if barcodeFunctie(sql) == "None":
print "geen output"
else:
try:
url='https://www.datakick.org/api/items/'+barcode
data = json.load(urllib2.urlopen(url))
print data['brand_name'], data['name']
except:
#barcode komt niet voor in eigen db en niet in db van datakick, in beide toevoegen
print barcode, " barcode als input"
naamProduct = str(raw_input("Wat is de naam van het product? "))
hoeveelheidProduct = raw_input("Hoeveel inhoud heeft het product? ")
sql = "insert into Voorraad (Id, NaamProduct,HoeveelHeidProduct) values (%s,%s,%s)" % (barcode, naamProduct, hoeveelheidProduct)
barcodeFunctie(sql)
print "meuktoegevoegd! :D"
`
我相信您错过了所有字符串占位符的单引号。这就解释了为什么它只适用于数字而不适用于字符串。你知道吗
我没有测试它,但我认为您的SQL语句应该如下所示:
您的问题是缺少ID的引号。请将上面的行更改为:
相关问题 更多 >
编程相关推荐