如何在python中将输入值与mysql数据库值进行比较

时间:2019-08-24 09:39:55

标签: python python-3.x mysql-python

因此,我想将输入值与数据库值进行比较。如果输入值与数据库相同,则我想print(inputvalue)。但是如果不一样,我想print("Data Does Not Exist")

所以我尝试了以下代码:

cur = connection.cursor()
query = """ SELECT * FROM `foo` """

cur.execute(query)
result = cur.fetchall()
inputvalue = input("Input= ")

for x in result:
    if inputvalue not in x:
        print("Data Does Not Exist")
    else:
        print(inputvalue)

这是输出:

inputvalue= 1728192
Data Does Not Exist
Data Does Not Exist
Data Does Not Exist
Data Does Not Exist
1728192
Data Does Not Exist
Data Does Not Exist
Data Does Not Exist

我希望输出是

Inputvalue= 1728192
Data Does Not Exist

如果数据不存在, 输出:

Inputvalue= 1728192
1728192

如果数据存在
任何答案将不胜感激!

2 个答案:

答案 0 :(得分:0)

我建议您查询该特定值是否在数据库中,而不是将所有行从foo加载到python中。数据库已针对此类请求进行了优化。如果数据库中有很多数据,则您的方法将需要大量时间才能将所有内容加载到内存中(这很容易导致memoryError)。

所以我想您将值存储在名为“ bar”的列中:

inputvalue = input("Input= ")
cur = connection.cursor()
query = """ SELECT * FROM `foo` WHERE bar = inputvalue """

cur.execute(query)
row_count = cur.rowcount
if row_count > 0:
    print(inputvalue)
else:
    print("Data Does Not Exist")

让您了解为什么您的方法无法按预期工作:使用for x in result:循环遍历表中的每一行,并针对每一行检查inputvalue是否在其中。

答案 1 :(得分:0)

您可以使布尔对象,并执行比较后的答案:

cur = connection.cursor()
query = """ SELECT * FROM `foo` """

cur.execute(query)
result = cur.fetchall()
inputvalue = input("Input= ")

temp = False
for x in result:
    if inputvalue in x:
        temp = True
if temp:
    print(inputvalue)
else:
    print("Data Does Not Exist")