Задать вопрос

Почему peewee не сохраняет изменения?

Peewee, по неясной для меня причине, перестал обновлять записи в БД
user = User.get(User.telegram_id == telegram_id)
user.state = json.dumps({
            'action': 'create',
            'step': 'name',
            'type': 'Categories',
            'value': None
        })
user.save()

При следующем получении данного пользователя из БД, поле state будет NULL.
Если добавить force_insert=True
user = User.get(User.telegram_id == telegram_id)
user.state = json.dumps({
            'action': 'create',
            'step': 'name',
            'type': 'Categories',
            'value': None
        })
user.save(force_insert=True)

то падает с ошибкой
peewee.IntegrityError: (1062, "Duplicate entry '1' for key 'PRIMARY'")


Такой вариант:
state = json.dumps({
            'action': 'create',
            'step': 'name',
            'type': 'Categories',
            'value': None
        })
query = User.update({User.state: state}).where(User.telegram_id == telegram_id)
query.execute()

тоже не записывает.
Хотя в режиме отладки если смотреть, то в пользователе значение state меняется. Но в самой БД нет!
  • Вопрос задан
  • 304 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
JustJew
@JustJew Автор вопроса
Самое интересное, что раньше это работало и резко перестало работать.
Заметил я это после того, как решил сменить программу для просмотра SQLite файлов.
После открытия базы в другой программе, при выполнении кода получал ошибку, что БД уже используется.
Сменил СУБД на MySQL. Теперь все работает, но не обновляются имеющиеся записи в БД.
Новые создаются, а старые НЕ перезаписываются.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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