Проверка данных пользователя с использованием sqlite3 и python - PullRequest
0 голосов
/ 10 января 2020

Я создал базу данных с именем finance.db, и она содержит таблицу с именем «test». Таблица принимает 5 параметров, включая «пользователь» и «пароль». Пользователь уже вставлен в таблицу.

Я бы хотел, чтобы пользователь мог войти в систему, указав свое имя пользователя и пароль и сопоставив их с таблицей базы данных «test». Если таблица содержит правильное имя пользователя и пароль, она позволяет пользователю войти в систему.

Вот как я могу представить, что это будет работать:

import sqlite3

user_name = input('Enter username: ')
user_password = input('Enter password:')

def login_details(username, password):

    connection = sqlite3.connect('finance.db')
    cursor = connection.cursor()

    cursor.execute('SELECT * FROM test')
    check = cursor.fetchall()

    for i in check:
        if username and password in check:
            print('works')
        else:
            print('not in db')

login_details(username=user_name, password=user_password)

К сожалению, всегда возвращается «not in db» , даже если введены правильные данные. Я не уверен, что мне не хватает, но я подозреваю, что мое утверждение if просто неверно, но это не приводит к синтаксису или другой ошибке.

ОБНОВЛЕНИЕ:

Я решил проблема путем извлечения информации, которая мне нужна, из кортежа и последующего сохранения ее значения в переменной. Вот что я изменил:

for i in check:
        user_name_input = i[1] 
        user_pass_input = i[2]

        if user_name_input != username and user_pass_input != password:
            print('not in db')

        else:
            print('in db')

1 Ответ

1 голос
/ 10 января 2020

В этой части кода

for i in check:
    if username and password in check

Я полагаю, что check - это список кортежей, который представляет все строки, соответствующие запросу в таблице. Итак, i - это кортеж, и вы должны сравнить свои переменные с указанными c позициями кортежа, которые соответствуют полям username и password. Возможно, что-то подобное:

for i in check:
    if username == i[0] and password == i[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...