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

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

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

10 ответов

13 просмотров

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. Поэтому просто так вычесть не получиться(

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Какой дос блять?
007
9
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Коллеги, а в чём сейчас хорошо писать на перле, в смысле ide? Пробовал в идее с плагином, подсветка есть, даже какие-то предупреждения есть, но рефакторинга считай нет. Перене...
Дмитрий Петров
9
Карта сайта