@pozner88

Как сделать запись в бд после обращения к ней?

При работе с БД столкнулся с ошибкой sqlite3.OperationalError: database is locked
Ошибка то понятная, БД заблокирована, так только я после каждого обращения её "коммитил", но все равно запись в ней уже сделать не могу.
Вот сам код
cur.execute(f'SELECT var FROM users WHERE user_id={user.id}')
                (var,) = cur.fetchone()
                con.commit()
                cur.execute(f'SELECT cal FROM {usern} ')
                (cal,) = cur.fetchone()
                con.commit()
                # здесь математические операции с данными с предыдущих запросов
                update_data(usern, data)

Где update_data следующая функция
def update_data(usern, data):
    cur.execute(f'UPDATE {usern} SET (data) = (?) ',
                    (data ))
    con.commit()

Запись в БД без предшествующих обращений к БД работают нормально, а когда перед этим есть SELECT пишет что БД заблокирована.
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
cur.execute(f'SELECT cal FROM {usern} ')
(cal,) = cur.fetchone()
Ты выбрал одну строку и не закрыл курсор. Может, дело в этом?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы