我试图更新SQLite3数据库中的值。该数据库有两列:Seat_Number和Name。该表共有30条记录。 Seat_Number列分别包含整数1到30,并且Name列中的所有值都写为' Unoccupied'。
我想知道如果用户输入0到30之间的座位号,是否有办法在名称列中更新单元格,但前提是“名称”列中的值是“未占用”#39;。另外,如果有办法做到这一点,将Name列中的所有值设置为NULL会更容易吗?
这是我到目前为止所拥有的:
import sqlite3
conn = sqlite3.connect('league.db')
c = conn.cursor()
def book_tickets():
option_1 = True
name = raw_input("Enter name: ")
if len(name)>0:
validated = False
seat_no = 0
while validated == False:
sn = raw_input("Enter seat number: ")
try:
seat_no = int(sn)
validated = True
except:
print "Invalid seat number"
if seat_no >= 1 and seat_no <= 30 and validated == True:
c.execute("UPDATE Seats SET Name = ? WHERE Seat_Number = ? AND Name = 'Unoccupied'",(name,seat_no))
conn.commit()
while option_1:
option_1 = raw_input("\t \t Book another seat? \t")
if option_1 == "Y" or option_1 == "y" or option_1 == "YES" or option_1 == "yes":
book_tickets()
elif option_1 == "N" or option_1 == "n" or option_1 == "NO" or option_1 == "no":
book_tickets()
elif option_1 == "":
print "Goodbye!"
else:
print gap
print "Invalid option"
elif seat_no < 1 or seat_no > 30:
print "Invalid seat number"
book_tickets()
else:
print "Invalid input."
book_tickets()
else:
print "You didn't enter your name."
book_tickets()
book_tickets()
剩下的代码很好,主要是为了让用户输入0到31之间的数字,但我只是希望程序告诉用户,如果Name中的值不是&#39; t&#39 ;未占&#39;其中Seat_Number = seat_no,然后打印&#39;座位已经预订&#39;并提示他们输入另一个座位号码。但是,如果Name中的值不是&#39; Unoccupied&#39;其中Seat_Number = seat_no,然后SET Name = name。
答案 0 :(得分:1)
执行UPDATE
后,请检查c.rowcount
。
如果它为零,则没有更新行,您可以打印“无法预订”消息。
如果是一个,那么一行符合条件并更新,您可以打印“预订成功”消息。
(如果它不止一个,那么就会更新多行。假设Seat_Number
是唯一的,那么你就有了一个错误。)