Найти тему
Programmer | Python

SQLite в Python первые шаги. Функция для регистрации пользователей. Часть 3

Изменение таблицы методом UPDATE

Продолжаем в нашем условии необходимо записать пароль и присвоить ему очки (балы).

user_password = input('Введите пароль: ')
sql.execute(f"UPDATE users SET password = '{user_password}', points = 10 WHERE login = '{user_login}'")
db.commit()

UPDATE - обновить таблицу - users, SET - для столбца password - равный - '{user_password}', каждому новому пользователю присваиваем 10 - балов - points = 10, WHERE - где столбец login равен - '{user_login}'. И снова сохраняем таблицу - db.commit().

Объединим все наши записи в одну функцию и создадим самую простую регистрацию. Назовём нашу функцию reg которая будет запрашивать первое действие которое необходимо выполнить - Зарегистрироваться или Войти:

def reg():
user = input('1. Зарегистрироваться \n2. Войти\nЧто необходимо сделать: ')

Прописываем условия, если создаётся новый user тогда нажимаем цифру - 1, если user уже существует, тогда цифру - 2.

Пропишем в начале условия для регистрации нового пользователя:

if user == '1':
user_login = input('Введите логин нового пользователя: ')
sql.execute(f"SELECT login FROM users WHERE login = '{user_login}'")
all = sql.fetchone()
if all is None:
sql.execute(f"INSERT INTO users (login) VALUES ('{user_login}')")
db.commit()
user_password = input('Введите пароль: ')
sql.execute(f"UPDATE users SET password = '{user_password}', points = 10 WHERE login = '{user_login}'")
db.commit()

if user == '1': - если user равен 1, тогда выполняются следующие условия:

Вводим логин, проверяем есть ли данный логин в таблице users. Новое условие: если такого логина нет, мы записываем его в столбец login после этого вы просим ввести пароль и добавляем данную запись в таблицу users к введенному ранее логину. Всё сохраняем и в конце выводим сообщение:

print('Вы успешно зарегистрировались')

Выполним условие при котором данный логин уже существует в таблице и он нас возвращает в начало функции:

else:
print('Такой логин уже существует')
return reg()

Следующее условие при котором необходимо войти в ранее созданный аккаунт:

elif user == '2':
user_login = input('Введите логин: ')
sql.execute(f"SELECT login FROM users WHERE login = '{user_login}'")
all = sql.fetchone()
if all is None:
print('Такого пользователя не существует')
else:
user_password = input('Введите пароль: ')
sql.execute(f"SELECT * FROM users WHERE login = '{user_login}' AND password = '{user_password}'")
all = sql.fetchone()
if all is None:
print('Неверный пароль')
return reg()
else:
print('Добро пожаловать', all[1], 'Ваши балы', all[3])

if user == '2': - если user равен 2, тогда выполняются следующие условия:

Вводим логин user_login = input('Введите логин: '), проверяем есть ли данный логин в таблице sql.execute(f"SELECT login FROM users WHERE login = '{user_login}'") записываем вывод в переменную all - all = sql.fetchone() если введенного логина нет в таблице if all is None: выводится соответствующее сообщение print('Такого пользователя не существует'). Если же такой логин есть в таблице - else:, то просим ввести пароль user_password = input('Введите пароль: ') и проверяем соответствует ли пароль с логином sql.execute(f"SELECT * FROM users WHERE login = '{user_login}' AND password = '{user_password}'"), вывод так же записываем в переменную all и создаём новое условие if all is None: если созданная переменная не найдена - None тогда выводится запись print('Неверный пароль') и возвращаем в начало функции return reg(). И если else: пароль соответствует логин выводим следующее сообщение print('Добро пожаловать', all[1], 'Ваши балы', all[3]).

Подробнее о всех обозначениях SQL читайте в прошлых публикациях.

В следующей статье мы разберём взаимодействие двух таблиц и модернизируем нашу функцию по регистрации.

Спасибо за внимание!

-2