Не добавляется новая строка в базе данных

import sqlite3

db = sqlite3.connect("bd/users.db")
    cur = db.cursor()
    rez = cur.fetchone()
    userid = message.from_user.first_name
    lvl_def = 0

    reg_cmd = '''CREATE TABLE IF NOT EXISTS users(
        id        INTEGER PRIMARY KEY AUTOINCREMENT
                  NOT NULL,
        user TEXT,
        lvl INTEGER
    );
    '''

    cur.execute(reg_cmd)
    db.commit()


    cur.execute("SELECT user FROM users")
    if rez is None:
        cur.execute('''INSERT INTO users(user, lvl) VALUES (?, ?)''', (userid, lvl_def))
        db.commit()
        bot.send_message(message.from_user.id, f"*Вы были зарегистрированы!*", parse_mode='Markdown')

    else:
        bot.send_message(message.from_user.id, f'*Ваш профиль существует в базе данных!*', parse_mode='Markdown')


    db.close()

База данных создает один профиль, а остальным пишет что их профиль уже создан, хотя на самом деле это не так.


Ответы (1 шт):

Автор решения: CrazyElf
cur = db.cursor()
rez = cur.fetchone()
...
cur.execute("SELECT user FROM users")
if rez is None:

Странно было бы, если бы такой код работал. Получать данные из курсора нужно после запроса на выборку из БД, а не до него.

Кроме того, вы не используете userid при запросе к БД. Итого примерно так должно быть:

cur = db.cursor()
...
cur.execute("SELECT user FROM users WHERE user=?", (userid,))
rez = cur.fetchone()
if not rez:
→ Ссылка