Не добавляется новая строка в базе данных
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: