在数据库mysql python 3.4中搜索的用户输入
我试图从用户那个里获取输入并在数据库表中搜索它。但我的if语句工作不正常,它对存在的值和不存在的值显示相同的结果。包含名、姓、年龄、收入、学位的学生表在数据库mysql python 3.4中搜索的用户输入,python,mysql,python-3.4,fuzzy-logic,Python,Mysql,Python 3.4,Fuzzy Logic,我试图从用户那个里获取输入并在数据库表中搜索它。但我的if语句工作不正常,它对存在的值和不存在的值显示相同的结果。包含名、姓、年龄、收入、学位的学生表 我把年龄作为用户输入。if语句不能正常工作。 这是我的代码:我尝试了许多不同的场景 import pymysql db= pymysql.connect("localhost","testuser","admin","TESTDB") cursor =db.cursor() age= input("Please select a age:\n")
我把年龄作为用户输入。if语句不能正常工作。 这是我的代码:我尝试了许多不同的场景
import pymysql
db= pymysql.connect("localhost","testuser","admin","TESTDB")
cursor =db.cursor()
age= input("Please select a age:\n")
cursor.execute(f"SELECT AGE FROM STUDENTS WHERE age={age}")
results=cursor.fetchall()
print(results)
if (results ==age):
print("age exit!")
else:
print("not exists")
try:
db.commit()
except:
db.rollback()
db.close()
我想避开你的问题和评论。可能您希望在失败的查找中使用错误值,如下所示:
import pymysql
db= pymysql.connect("localhost","testuser","admin","TESTDB")
cursor =db.cursor()
age= input("Please select an age:\n")
cursor.execute("SELECT age FROM STUDENTS WHERE age=%s", (age,))
data = cursor.fetchall()
if data:
print("Age exists")
else:
print("Age does not exist")
这种查找不需要任何类型的提交
或回滚
,您只是在查询数据库,因此代码的后一部分对我来说没有意义
当前查询将返回age
等于当前值的所有情况。如果目的只是查看它是否存在,那么您可以限制查询并使用它
首先,您不应该对查询使用字符串格式,因为这是一种SQL注入风险。其次,您的结果将作为包含一项的元组返回,因此您需要对结果进行
[0]
索引以获得实际值。谢谢,但是我的if语句不起作用,我也使用了results=cursor.fetchall()[0],它只显示一个值,但问题是if语句不起作用。请尝试打印(repr(结果),repr(age))
。数字83
与字符串“83”
不同(也不等于)。这是你的问题吗?(我的意思是在[0]
问题之上,这也是一个问题,你还没有解决。)另外,为什么您要尝试提交或回滚一个未做任何更改的事务?为什么只有在提交失败时才关闭数据库,否则就会泄漏?同时,cursor.fetchall()
返回一个项的一个元组列表,而不是一个项的元组。因此您实际上需要[0][0]
-首先获取结果中的第一(唯一)行,然后获取该行中的第一(唯一)列。是的,我需要wt:)thnx@Rida它真的能解决你的问题吗?如果它能满足您的需求,那么它在这方面的效率可能会更高。是的!比较并给出准确的结果。如何使其高效?
cursor.execute("SELECT age FROM STUDENTS WHERE age=%s LIMIT 1", (age,))