我不太确定如何处理这个问题,但是在将我的输入与数据库中存在的数据进行比较时,我得到了 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
。