我使用以下代码在系统中进行预订,但它返回错误:
conn = sqlite3.connect('SADS.db')
cur = conn.cursor()
choice = raw_input("What day would you like to book seats on? F/S : ")
if choice == "F":
bookseats = [0,1]
print"What seats would you like to book?"
bookseats[0] = raw_input("Choice : ")
bookseats[1] = raw_input("What is their user ID? : ")
cur.execute("SELECT * FROM seats WHERE Booked='N'")
rows = cur.fetchone()
for row in rows:
if row == None:
break
elif row[1] == bookseats[0] and row[4] == "N" and row[3] == "F":
print "Seat Number:" , row[1] ,"Is now booked!"
cur.execute("UPDATE seats SET Booked =N AND CustID=?", (bookseats[0]))错误:
TypeError: 'float' object has no attribute '__getitem__'我真的很困惑这个错误是什么,以及我如何修复它?
发布于 2013-02-08 02:26:29
您正在循环遍历rows = cur.fetchone()的结果,它只检索一行。删除该行并直接在光标上循环:
cur.execute("SELECT * FROM seats WHERE Booked='N'")
for row in cur:您也不需要测试row == None,也不需要测试Booked列是否等于N。将循环简化为:
cur.execute("SELECT * FROM seats WHERE Booked='N' AND CustID=?", (bookseats[0],))
row = cur.fetchone()
if row is not None and row[3] == "F":
print "Seat Number:" , row[1] ,"Is now booked!"
cur.execute("UPDATE seats SET Booked =N AND CustID=?", (bookseats[0]))您可以向数据库请求与您的bookseats[0]列匹配的行,并且第三列设置为F。您没有向我们展示您的模式,因此很难建议您如何针对该模式更新查询。
您的UPDATE查询不正确,您的意思可能是:
cur.execute("UPDATE seats SET Booked='Y' WHERE CustID=?", (bookseats[0],))而不是。
发布于 2013-02-08 02:27:16
fetchone不返回行的列表,而是只返回一行,所以这是不正确的:
rows = cur.fetchone()
for row in rows:相反,这样做:
row = cur.fetchone()https://stackoverflow.com/questions/14758239
复制相似问题