пользовательский ввод ищется в базе данных mysql python 3.4 - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь получить данные от пользователя и выполнить поиск в таблице базы данных. но мой оператор 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()

1 Ответ

0 голосов
/ 06 июля 2018

Я пытаюсь уйти от вашего вопроса и ваших комментариев. Может быть, вы хотите что-то вроде следующего, где вы полагаетесь на значение Falsey при неудачном поиске:

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,))
...