【发布时间】:2020-08-05 14:59:58
【问题描述】:
我有一个小型数据库,其中包含一个名为 cards 的表。
-
number列是TEXT。 - 我有多行,我试图让用户输入马赫
例如:
connection = sqlite3.connect('card.s3db')
cursor = connection.cursor()
card_check = cursor.execute('SELECT number FROM card')
connection.commit()
prompt_card_number = input("Enter your card number:\n")
for number in card_check:
if number == prompt_card_number:
check_stage2()
else:
print("\nWrong card number or PIN!")
connection.close()
由于某种原因,我在数据库中输入了匹配的卡号,但我仍然得到Wrong card number or PIN!,我无法通过check_stage2()。
我做错了什么?
编辑:好的,所以我现在尝试了这段代码:
def check_stage1():
connection = sqlite3.connect('card.s3db')
cursor = connection.cursor()
cursor.execute('SELECT number FROM card')
card_check = cursor.fetchall()
print(card_check)
prompt_card_number = input("Enter your card number:\n")
for number in card_check:
if number == prompt_card_number:
# account_interface()
print("ok")
else:
print("\nWrong card number or PIN!")
connection.commit()
connection.close()
而card check 返回一个像[('4000006601632606',), ('4000006102182200',), ('4000009048898194',), ('4000006526735435',), ('4000002961735386',), ('4000008741268614',), ('4000001893515676',)] 这样的奇怪元组列表
但我不知道如何迭代它。如果我输入正确的数字,它似乎仍然不起作用。
编辑 2:
我发现了如何遍历元组,但即使 number[0] 类型是 str,我仍然得到 Wrong card number or PIN!,而且我的输入也是 str。请参阅此代码:
def check_stage1():
connection = sqlite3.connect('card.s3db')
cursor = connection.cursor()
cursor.execute('SELECT number FROM card')
card_check = cursor.fetchall()
print(card_check)
prompt_card_number = input("Enter your card number:\n")
for number in card_check:
if number[0] == prompt_card_number:
# account_interface()
print(number[0])
print(type(number[0]))
else:
print("\nWrong card number or PIN!")
正在返回Enter your card number: 4000009048898194 <class 'str'>
【问题讨论】:
标签: python sqlite for-loop input tuples