sqlite3.OperationalError: database is locked

Делаю бота в телеграмм, типо игры, при достижении определенного XP уровень повышается и таблица обновляется, но вылазит ошибка:

sqlite3.OperationalError: database is locked

Код:

from aiogram import Bot, Dispatcher, executor, types
import asyncio
import sqlite3 as sq
async def up_level(user_id):
    db = sq.connect("new db1")
    cur = db.cursor()
    for i in cur.execute(f"""SELECT level_user FROM user_db WHERE user_id = {user_id}"""):
        level = i[0]
    db = sq.connect("new db1", timeout=5)
    cur_l = db.cursor()
    for i in cur_l.execute(f"""SELECT ex FROM level WHERE user_id = {user_id}"""):
        ex = i[0]
        print(ex)
    for i in cur_l.execute(f"""SELECT ex_level FROM level WHERE user_id = {user_id}"""):
        ex_level = i[0]
        print(ex_level)
    if ex_level <= ex:
        x = 100
        y = 0
        cur.execute(f"""UPDATE user_db SET level_user = '{level + 1}' WHERE user_id = {user_id}""")
        await bot.send_message(chat_id=user_id,
                            text= f"XP полон! Ваш уровень увеличен до {level + 1}")
        cur_l.execute(f"""UPDATE level SET ex_level = '{x}' WHERE user_id = {user_id}""")
        cur_l.execute(f"""UPDATE level SET ex = '{y}' WHERE user_id = {user_id}""")
        db.commit()

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

Автор решения: Daniil K-R

Попробуй так:

db = sq.connect("new db1", timeout=5, check_same_thread=False)
                                      ^^^^^^^^^^^^^^^^^^^^^^^

Это позволяет подключение к базе данных, если она уже открыта, например, в SQL stuio. Второе подключение к БД убери, а то код рушится

→ Ссылка