Я пытаюсь сравнить данные в 2 таблицах, чтобы я мог определить, что изменилось, и применить необходимые update
с или insert
с.
Наиболее очевидный способ (для меня) сделать это в базе данных - это внешнее объединение двух таблиц и определение таким образом новых или измененных значений, но мне интересно, есть ли встроенная возможность SQLAlchemy, которая, например, , учитывая 2 таблицы, он может идентифицировать дельты?
Эта возможность идентификации различий прекрасно реализована в python с нотацией set
.
Пример "таблиц" (наборов) с несколькими строками (кортежами)
table1 = {('a', 'b'), ('c', 'd')
table2 = {('a', 'DELTA'), ('c', 'd'), ('e', 'f')}
diff = table2.difference(table1)
# {('a', 'DELTA'), ('e', 'f')}
Ожидаемый результат:
- Строка
('a', 'b')
в table1
должна быть UPDATE
ed до ('a', 'DELTA')
- Строка
('e', 'f')
должна быть INSERT
ed до table1
Я видел концепцию сравнения , на которую есть ссылки в core
документах, но я не смог найти ни примеров, ни деталей в дополнение к основному определению.
Как другие справляются с такими ситуациями, используя SQLAlchemy?
Спасибо.