Я пытаюсь ввести данные пользователя и выполнить поиск в таблице базы данных. но оператор if не работает должным образом. Он показывает одинаковые результаты для существующих значений и значений, которые не существуют. Таблица студентов, содержащая first_name, last_name, возраст, доход, степень
и я беру возраст в качестве пользователя. если инструкция не работает правильно. вот мой код: я пробовал много разных сценариев
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")
Такой поиск не требует каких-либо commit
или rollback
, вы просто запрашиваете базу данных, поэтому последняя часть вашего кода не имеет для меня смысла.
Ваш текущий запрос вернет все случаи, когда age
равен текущему значению. Если целью является просто посмотреть, существует ли она, тогда вы можете ограничить запрос и использовать fetchone()
.
cursor.execute("SELECT age FROM STUDENTS WHERE age=%s LIMIT 1", (age,))
[0]
для результата, чтобы получить фактическое значение.