сохранение роли в БД
Почему при запуске пишет: File "voice.py", line 54, in on_ready if cursor.execute(f'SELECT role_id FROM users WHERE role.id = {member.id}').fetchone() is None: sqlite3.OperationalError: no such column: role_id
код:
@client.event
async def on_ready ():
print ('готово')
cursor.execute("""CREATE TABLE IF NOT EXISTS users (
role_id BIGINT,
id BIGINT
)""")
for guild in client.guilds:
for member in guild.members:
if cursor.execute(f'SELECT id FROM users WHERE id = {member.id}').fetchone() is None:
cursor.execute(f'INSERT INTO users VALUES ("{member}", {member.id}, 0 )')
connection.commit()
if cursor.execute(f'SELECT role_id FROM users WHERE role.id = {member.id}').fetchone() is None:
cursor.execute(f'INSERT INTO users VALUES ("{member}", {member.id}, 0 )')
else:
pass
connection.commit()
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
Проблема в том, что вы создаете таблицу, но не сохраняете ее и пытаетесь сделать запись в дальнейшем.
Добавьте connection.commit() после
cursor.execute("""CREATE TABLE IF NOT EXISTS users (
role_id BIGINT,
id BIGINT
)""")
У вас в коде, в этой строке
if cursor.execute(f'SELECT role_id FROM users WHERE role.id = {member.id}').fetchone() is None:
вместо названия столбца role_id используется role.id.
Также, при записи вы пытаетесь записать 3 колонки:
("{member}", {member.id}, 0 )
но при это у вас в таблице их только две