Я пишу скрипт Python для входа в систему, который проверяет, присутствует ли учетная запись пользователя в базе данных SQLite. Как вставить заполнители в мой оператор sql для проверки ввода пользователя по записям в таблице базы данных? или какую другую альтернативу я могу применить, не используя цикл for, который может быть медленным, если база данных огромна?
Используя python3 в качестве базового кода и интегрируя Sqlite для базы данных, я попытался использовать предложение EXISTS послепользовательский ввод путем включения заполнителей для значений, которые представляют пользовательский ввод. Предложение Exists обычно возвращает 1 (True) или 0 (False), которые я присвоил переменной, чтобы при проверке на «IF selector» проверять, существует ли запись учетной записи в таблице «Log» или нет.
print('Logging into an existing account...')
try:
self.user = input('Enter user name: ')
self.pas = input('Enter password: ')
self.log = (self.user,self.pas)
self.sql = '''SELECT EXISTS (SELECT 1 FROM Log WHERE
Name=? AND Password=?);'''
self.cur.execute('SELECT * FROM Log;')
self.val = self.cur.execute(self.sql,self.log)
if self.val == 1:
print(f'\nLogged in as {self.user}')
time.sleep(2)
else:
print('\nAccount is non-existent!')
time.sleep(2)
Ожидаемый результат: При наличии записи пользователя в соответствии с предложением EXISTS всегда должно возвращаться значение 1, которое в случае проверки с помощью селектора IF должно иметь значение «True», что приводит к выводу «Logged as (user)».
Фактический результат: вывод «Учетная запись не существует», несмотря на наличие записи пользователя в таблице базы данных без ошибок.