Как сравнить входное значение со значением базы данных mysql в python

#python #mysql #sql

#python #python-3.x #mysql-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
 

Если данные существуют
Любой ответ будет оценен по достоинству!

Ответ №1:

Вместо того, чтобы загружать все строки из foo в python, я бы предложил запросить, есть ли это конкретное значение в вашей базе данных. Базы данных оптимизированы для такого запроса. И если в вашей базе данных много данных, вашему подходу потребуется много времени, чтобы загрузить все в память (что может легко привести к ошибке памяти).

Итак, я предполагаю, что вы храните свои значения в столбце с именем ‘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 .

Комментарии:

1. Привет, спасибо за ваш ответ, ваш код работает!. И спасибо, что указали на мою ошибку

Ответ №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")