Обновление нужного массива в столбце с помощью peewee
Всех приветствую, у моего столбца, атрибут массива, и тип Bigint
statistics = ArrayField(BigIntegerField, default=[0, 0, 0, 0, 0, 0])
В документации, посмотрел пример, как отправлять запрос на обновление:
PageView = Table('page_views')
query = (PageView
.update({PageView.c.page_views: PageView.c.page_views + 1})
.where(PageView.c.url == url))
query.execute(database)
Моя попытка:
await db.execute(MarriagePlayer.update({
MarriagePlayer.statistics[0]: MarriagePlayer.statistics[0] + 1
}).where(
MarriagePlayer.chat_id == msg.receiver_id,
MarriagePlayer.user_id << [msg.sender_id, p.loved]))
Но я получаю ошибку:
MarriagePlayer.statistics[0]: MarriagePlayer.statistics[0] + 1
TypeError: unhashable type: 'ObjectSlice'
Вопрос: как правильно обновить нужный мне массив при этом избежать этой ошибки?
Ответы (1 шт):
Автор решения: Cookie
→ Ссылка
Существовала недостающая реализация метода, которая не позволяла использовать выражения секций в качестве ключей dict. Это теперь исправлено в master:
https://github.com/coleifer/peewee/commit/7eb7498018b4265ce7e79c3e2b0b90a93d622d45
Исправление будет включено в следующую версию.