Я пытаюсь обновить много записей в таблице, используя библиотеку Peewee . Внутри цикла for
я извлекаю одну запись, а затем обновляю ее, но это звучит ужасно с точки зрения производительности, поэтому мне нужно сделать обновление оптом. Текущий код выглядит так:
usernames_to_update = get_target_usernames()
for username in usernames_to_update:
user = User.get(User.username == username) # username is primary key
if user.type == 'type_1':
user.some_attr_1 = some_value_1
elif user.type == 'type_2':
user.some_attr_2 = some_value_2
# elif ....
user.save()
В документации есть функция insert_many
, но нет ничего похожего на update_many
. В поисках я нашел следующие решения:
- Выполнение необработанного запроса с использованием
CASE
: Ссылка
- Использование
replace_many
: Ссылка
- Использование
update
: Ссылка
Но я не смог найти примеров того, как использовать второе или третье решение. Кто-нибудь может прояснить, как можно использовать случаи 2 и 3?