Использование пользовательского ввода (Python 3.7) в sqlite3 - PullRequest
0 голосов
/ 15 марта 2019

Эй, ребята, я сейчас работаю над задачей и пытаюсь добавить функцию входа в систему, которая запрашивает у пользователя его имя пользователя, а затем проверяет, совпадает ли его ввод с данными в базе данных. Извините за плохое кодирование, это мой второй год, и я в 10 классе.


import sqlite3

db = sqlite3.connect('library.db')

cursor = db.cursor()

result = cursor.fetchall

def login():
    user = input("VAT IS YAH USERNAM: ")
    pastuser = user
    user = ("%" + user + "%")
    cursor.execute("SELECT username FROM Users WHERE username LIKE " + user)
    result = cursor.fetchall()
    if result == pastuser:
        print("VAT IS YAH PASWRD")

login()

1 Ответ

0 голосов
/ 15 марта 2019

Несмотря на отсутствие проблемы, ваш оператор SELECT получил синтаксические ошибки, поскольку отсутствует " между % знаками LIKE, поэтому измените

user = ("%" + user + "%")

до

user = ("\"%" + user + "%\"")

Также вы сравниваете result с pastuser, но в результате получается список кортежей со всеми кортежами, возвращенными из SELECT, если вы хотите проверить только первое обнаруженное пользователем изменение

if result == pastuser:

до

if result[0][0] == pastuser:

или вы можете изменить метод fetchall на fetchone, который возвращает один кортеж.

Если вы хотите выполнить итерации всех пользователей:

for u in result:
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...