Я работаю с довольно динамичным входящим потоком XML.Я читаю в XML, добавляю найденные значения в список словарей, а затем использую execute many для добавления словарей в БД.
Входящий XML не всегда может содержать значения, поступающие в БД.Сегодня я использую большое количество попробовать / кроме.Я также посмотрел на присвоение значения <.find> переменной, а затем проверял эту переменную на значение if not null при добавлении в словарь.
Оба эти решения выглядят довольно некрасиво и напоминают тяжелый шаблонный код.Есть ли лучшие практики / стандарты?
Ниже приведены несколько идей, с которыми я играю:
Функция для обработки, если элемент пуст или атрибут отсутствует:
def lookup(elm, path_to_elm, attrib_name):
return_value = elm.find(path_to_elm)
if return_value is not None:
return return_value.attrib.get(attrib_name, ("No Attribute: ", attrib_name))
else:
return_value = ("No Element", path_to_elm, " in Element ", elm)
return return_value
также смотрит на короткие замыкания:
print root.find('./path/to/elm') or ElmTree.Element('')).attrib.get('Desired_Attribute',"")