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

Posted

技术标签:

【中文标题】如何在python中将输入值与mysql数据库值进行比较【英文标题】:How to compare input value with mysql database value in python 【发布时间】:2019-08-24 09:39:55 【问题描述】:

所以我想将输入值与我的数据库值进行比较。如果输入的值与数据库的值相同,我想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

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

【问题讨论】:

【参考方案1】:

我建议不要将 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 是否在其中。

【讨论】:

嘿,谢谢您的回答,您的代码正在运行!并感谢您指出我的错误【参考方案2】:

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

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

【讨论】:

以上是关于如何在python中将输入值与mysql数据库值进行比较的主要内容,如果未能解决你的问题,请参考以下文章

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

Jmeter中将API返回值与数据库查询值进行比对断言操作

数据库中的空值与NULL的区别以及python中的NaN和None

数据库中的空值与NULL的区别以及python中的NaN和None

将整数文本字段值与java中的mysql数据进行比较

如何在 Python 中将列表作为函数的输入传递