![](/img/trans.png)
[英]TypeError: 'float' object has no attribute '__getitem__'
[英]TypeError: 'float' object has no attribute '__getitem__'
我使用以下代码在系统中进行预订,但返回错误:
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__'
我真的很困惑错误是什么以及如何解决?
您正在遍历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]
列匹配的行,以及将第3列设置为F
。 您没有向我们显示您的架构,因此很难建议您如何为此更新查询。
您的UPDATE
查询不正确,您可能意味着:
cur.execute("UPDATE seats SET Booked='Y' WHERE CustID=?", (bookseats[0],))
代替。
您的SQL查询和更新看起来可疑; 在不了解完整架构的情况下,它的确看起来像是在混合您的座位号和客户号。
fetchone
不返回行列表,而仅返回一行,因此这是不正确的:
rows = cur.fetchone()
for row in rows:
改为:
row = cur.fetchone()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.