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

How to compare input value with mysql database value in 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

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

与其将 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: 循环遍历 table 中的每一行,并且对于每一行,您检查 inputvalue 是否在其中.

您可以创建布尔对象并在执行后比较您的答案:

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")