Code: Alles auswählen
<?xml version="1.0"?>
<TAGS>
<tag ttype="k" tname="Mikrocontroller" tproperty="Kategorie" />
<tag ttype="t" tname="Controller" tproperty="Obergruppe" />
<tag ttype="t" tname="Bausatz" tproperty="Obergruppe" />
<tag ttype="t" tname="Controller Set" tproperty="Obergruppe" />
<tag ttype="t" tname="Prototype Board" tproperty="Obergruppe" />
<tag ttype="t" tname="USB" tproperty="Obergruppe" />
</TAGS>
Code: Alles auswählen
{'tname': 'Mikrocontroller', 'ttype': 'k', 'tproperty': 'Kategorie'}
{'tname': 'Controller', 'ttype': 't', 'tproperty': 'Obergruppe'}
{'tname': 'Bausatz', 'ttype': 't', 'tproperty': 'Obergruppe'}
{'tname': 'Controller Set', 'ttype': 't', 'tproperty': 'Obergruppe'}
{'tname': 'Prototype Board', 'ttype': 't', 'tproperty': 'Obergruppe'}
{'tname': 'USB', 'ttype': 't', 'tproperty': 'Obergruppe'}
Mein Versuch sieht so aus. Ich bekomme aber eine Fehlermeldung
Code: Alles auswählen
def import_tags_from_xml():
f = open('shop/model/tags.xml', 'r')
tree = etree.parse(f)
root = tree.getroot()
for child in root:
attr = Tag(child.attrib)
session.add(attr)
session.commit()
Ich weiß jetzt nicht, ob das ein Problem von Elixir ist oder generell mit SQLAlchemy auf diesem Weg nicht geht. Gibt es da eine direkte Möglichkeit?Traceback (most recent call last):
File "test.py", line 66, in <module>
tags.import_tags_from_xml()
File "/home/burli/dev/flask/shop1/shop/model/tags.py", line 124, in import_tags_from_xml
attr = Tag(child.attrib)
File "/usr/local/lib/python2.7/dist-packages/Elixir-0.7.1-py2.7.egg/elixir/entity.py", line 829, in __call__
return type.__call__(cls, *args, **kwargs)
File "<string>", line 4, in __init__
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.6.5-py2.7.egg/sqlalchemy/orm/state.py", line 105, in initialize_instance
return manager.events.original_init(*mixed[1:], **kwargs)
File "/usr/local/lib/python2.7/dist-packages/Elixir-0.7.1-py2.7.egg/elixir/entity.py", line 42, in __init__
old_init(self, *args, **kwargs)
TypeError: __init__() takes exactly 1 argument (2 given)