Как получить запись из таблицы SQLite с данными пользователя (login, password)

Рейтинг: 0Ответов: 1Опубликовано: 08.03.2023

У меня есть таблица с данными пользователя (user_id PRIMARY KEY,login TEXT, password TEXT)

Как правильно записать функцию которая будет сравнивать введённый логин из телеграмм бота на aiogram с записью в таблице?

database.py

import sqlite3
from aiogram import types
def sql_start():

    global conn, cur

    conn = sqlite3.connect('users.db')
    cur = conn.cursor()

    if conn:
        print('Подключение в базам данных...')
        print('База данных подключена')
    else:
        print('Не удалось подключится к базе данных')

    cur.execute("""CREATE TABLE IF NOT EXISTS users(
    user_id INTEGER PRIMARY KEY,
    login TEXT NOT NULL,
    password TEXT NOT NULL
    );
    """)

    conn.commit()

async def add_user_to_db(user_id, login, password):
    insert_query = f"INSERT INTO users (user_id, login, password) VALUES (?, ?, ?)"
    record_to_insert = (user_id, login, password)
    cur.execute(insert_query, record_to_insert)
    conn.commit()

async def user_exists(user_id):
    result = conn.execute(f'SELECT * FROM users WHERE user_id = {user_id}').fetchall()
    return bool(len(result))

async def user_check_login(login):
    info = cur.execute(f'SELECT * FROM users WHERE login = {login}').fetchone()
    print(len(info))
    if len(info) == 0: 
        return False
    else:
        return True

user.py

###### Описание хендлеров входа #######
@dp.message_handler(Text(equals='Вход'), state=None)
async def enter(message: types.Message):
    await message.answer('Введите логин')
    login = database.user_check_login
    if database.user_check == login:
        await message.answer('Логин принят')
        await message.answer('Введите пароль')
    else:
        await message.answer ('Введён неверный логин')
        return enter
    

Ответы

▲ 0
cursor.execute(
    "SELECT * FROM users WHERE user_id = ?;",
    (
        user_id,
    )
)
print(cursor.fetchone())
# Out: (<user_id>, <login>, <password>)

Данный код вполне должен хорошо работать. Я советую вам расписать блоки в ООП к базе, то-есть написать класс для управления базой данных, классы к примеру для получения данных и обновления.