170 похожих чатов

Пока с пидантиком начал разбиратся, и понял что я не

знаю как сравнить модели. Вот у меня список с 3к моделей старых и 3к новых с измененными данными.
Циклом for бежать по обьектам и искать i in old_models_list?

10 ответов

31 просмотр

set(new_models_list) - set(old_models_list) получите новые, которых нет в старых

Art- Автор вопроса
Kirill Leontev
set(new_models_list) - set(old_models_list) получ...

ну как бы и да... но из всех 30 полей там изменится может всего 1. Нужно ли апдейтить всю строку если можно апдейтить только 1 поле?) + есть вариант что в новых данных вообще исчезнет какая то запись или наоборот может добавится

не нужно, но разницу в производительности вы не заметите ключевое поле у таблицы есть?

Art- Автор вопроса
Kirill Leontev
не нужно, но разницу в производительности вы не за...

да это уникальные id. правда там с инкрементацией какой то бред, начинаются идти по порядку (с пропусками видимо удаляются) до "id": "262" потом следом "id": "2875", "id": "499488", "id": "2257580", Ну и все в таком духе дальше))

Art- Автор вопроса
Kirill Leontev
set(new_models_list) - set(old_models_list) получ...

Хотя реализация по-моему самая правильная. И работать будет как надо

old_id = {m.id for m in old_models} new_id = {m.id for m in new_models} added_id = new_id - old_id deleted_id = old_id - new_id models_to_insert = {m for m in new_models if m.id in added_id} models_to_delete = {m for m in old_models if m.id in deleted_id} models_to_update = set(new_models) - set(old_models) - models_to_insert в общем чето типа такого, навскидку. переизобретаем sql

Art- Автор вопроса
Kirill Leontev
old_id = {m.id for m in old_models} new_id = {m.id...

только вот хорошо бы ещё не просто models_to_update а апдейт только тех полей которые изменились))

Art
только вот хорошо бы ещё не просто models_to_updat...

вы усложните код в разы, потратите время на питоне, и выиграете пару микросекунд в базе. оно того не стоит. на мой взгляд вообще всё написанное выше это дичь, это надо писать на sql и вообще не трогать питон.

Art- Автор вопроса
Kirill Leontev
old_id = {m.id for m in old_models} new_id = {m.id...

Привет. Я тут попробовал реализовать предложенный тобой вариант. Модель пидантика не может содержатся во множестве Set. Она unhashable. Поэтому просто так вычесть не получиться(

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта