在检查输入是否存在于实际上存在的数据库中时获取 False 值



我不太确定如何处理这个问题,但是在将我的输入与数据库中存在的数据进行比较时,我得到了 False 值。这是我当前的代码:

conn = sqlite3.connect('db_employees.db')
c = conn.cursor()
query = "SELECT * FROM tb_emp_info"
c.execute(query)
result = c.fetchall()
in_ = 'Permanent', # 'Permanent' is present in the database
print(in_ in result) # check if input is present in the database

问题是fetchall()为每一行返回一个元组(注意链接是针对 MySQL 的,但解释比官方文档更好):

该方法提取查询结果集的所有(或所有剩余)行,并返回元组列表。如果没有更多行可用,则返回一个空列表。

这意味着result将如下所示:

[(field1, field2, f3...), (field1, field2, f3...), ...]

现在,in将检查是否有任何(field1, field2, f3...)等于Permanent,这显然总是错误的。

根据这个问题:

print(len([item for item in result if in_ in item]) > 0)

或者按照@shmee的建议:

print(any(item for item in result if in_ in item))

如果in_出现在result中的任何位置,这应该打印True

最新更新