Я пишу небольшое приложение и хочу вести читабельный журнал аудита любых изменений в базе данных (поэтому намеренно избегаю инструментов, которые регистрируют изменения, как записано в базе данных)
Код ниже работает, ноэто совсем не элегантно.Можете ли вы придумать более элегантный способ реализовать это?
def auditdiff(set1, set2):
new = set(set1.items())
old = set(session[set2].items())
diffset = dict(old ^ new) # holds what has changed
m = {}
for d in diffset:
for pair in old:
if pair[0] == d:
m[d + " OLD"] = pair[1]
for pair in new:
if pair[0] == d:
m[d + " NEW"] = pair[1]
return(m)
Вот примеры переменных, перехваченных отладчиком:
set1: (старые значения)
<class 'dict'>: {'date': '2019-04-25', 'student_id': None, 'booking_id': '', 'key': '', 'status': 'ATTEND', 'note': 'this is a changed note', 'charge': False}
set2: (новые значения)
<class 'set'>: {('date', '2019-04-25'), ('note', 'this is a note'), ('student_id', None), ('charge', False), ('key', ''), ('status', 'ATTEND'), ('booking_id', '')}
diffset: (разница)
<class 'dict'>: {'note': 'this is a changed note'}
m: (старые и новые измененные значения)
<class 'dict'>: {'note OLD': 'this is a note', 'note NEW': 'this is a changed note'}
С уважением
Джеймс