Seite 1 von 1

[clay2py] Konvertiert XML-DB-Schemas in Python models

Verfasst: Samstag 13. März 2010, 00:18
von ms4py
Ist irgendjemand so etwas bekannt? Oder wenigstens irgendetwas in diese Richtung?

Oder ein Parser von SQL mit den "create table"-Anweisungen zu den Python-Klassen?

Falls es das nicht gibt, will ich das eventuell selber implementieren. Dann sollte es am besten ein Modeller mit Eclipse Integration sein.
Clay ( http://www.azzurri.jp/en/clay/index.html ) sieht auf den ersten Blick ganz nett aus und legt die Daten auch in einer sinnvollen XML-Struktur ab, die relativ einfach zu parsen sein müsste:
http://paste.pocoo.org/show/188972/

Habt ihr sonst noch irgendwelche Vorschläge? Welche Library für das XML-Processing soll ich nehmen?

Edit: Topic changed.

Verfasst: Samstag 13. März 2010, 02:22
von ms4py
Habe mal ein erstes Konzept zu einem Parser von *.clay zu model.py entwickelt.
http://bitbucket.org/ms4py/clay2py
Hinweis: Bisher ist nur die "core.py" interessant. Die "model.py" ist die automatisch generierte Datei und die "relationship.py" enthält noch Null ausführbaren Code.

Meinungen, Anregungen?
(Fragen von oben sind natürlich trotzdem noch offen)

Verfasst: Samstag 13. März 2010, 09:49
von Käptn Haddock
Leider hat Clay zumindest für Postgres noch einen SQL-Stand von 7.3/7.4. Ich benutze es deshalb mittlerweile nicht mehr zur SQL-Generierung.
Was ich cool fände, wäre neben der SQLAlchemy-Unterstützung auch gleich GeoAlchemy/PostGIS mit zu implementieren. Ich schau mir dein Projekt mal an und finde es eine gute Idee, eventuell kann ich ja in der Richtung auch was beitragen.

Grüssle Uwe

Verfasst: Samstag 13. März 2010, 11:19
von ms4py
Käptn Haddock hat geschrieben:Leider hat Clay zumindest für Postgres noch einen SQL-Stand von 7.3/7.4. Ich benutze es deshalb mittlerweile nicht mehr zur SQL-Generierung.
Wäre ja für meinen Anwendungsfall eigentlich irrelevant.
Käptn Haddock hat geschrieben: Was ich cool fände, wäre neben der SQLAlchemy-Unterstützung auch gleich GeoAlchemy/PostGIS mit zu implementieren. Ich schau mir dein Projekt mal an und finde es eine gute Idee, eventuell kann ich ja in der Richtung auch was beitragen.
Ja, habe mir auch schon überlegt, ein Konzept für verschiedene Ausgabeformate einzuführen.

@mods: Langsam wäre vielleicht ein Verschieben ins "Showcase" oder "Ideen" Forum angebracht :wink:

Verfasst: Samstag 13. März 2010, 14:23
von ms4py
Also, ich habe jetzt ein Konzept für sog. "dialects" eingebaut. Damit ist man in der Lage, die geparste Struktur in ein beliebiges Ausgabeformat zu konvertieren.

Auf der Gegenseite ist eventuell ein ähnliches Konzept sinnvoll, also dass es verschiedene Parser gibt und man nicht nur die *.clay Dateien verarbeiten kann. Gibt es hierfür Vorschläge? (am besten mit Beispiel-Inputfile)

Außerdem habe ich jetzt erste Versuche mit dem XML-Parsen (lxml) angestellt. Allerdings erscheinen mir diese noch etwas sehr ungeschickt und umständlich.
Vielleicht könnt ihr euch den Code mal anschauen und mir ein paar Tipps geben. (clay2py.parse)

Verfasst: Samstag 13. März 2010, 22:04
von jens
Django's inspectdb ist sicherlich bekannt, oder?

Verfasst: Samstag 13. März 2010, 23:59
von ms4py
jens hat geschrieben:Django's inspectdb ist sicherlich bekannt, oder?
Nein, bis jetzt nicht. Aber das ziehlt ja auch am Anwendungsfall vorbei. Ich will ja kein django Model, sondern Elixir ;)

Selbst wenn, müsste ich einen großen Umweg gehen:
XML-DB-Model > SQL > SQL Execute > Introspect > Python-Model

Außerdem habe ich noch ein paar Gedanken im Hinterkopf für das mir dieses Projekt auch noch nützlich sein kann. Muss aber noch daran feilen, bis ich das in ein anständiges Konzept gepackt habe ;)

Verfasst: Sonntag 14. März 2010, 14:25
von ms4py
Inzwischen funktioniert die gesamte Toolchain
Clay-Model > clay2py-Model > Elixir-Model
mit dem Beispiel des Elixir-Tutorials aus Abschnitt 4.
( http://elixir.ematia.de/trac/wiki/Tutor ... ationships )

Würde mich sehr über Feedback und Tipps freuen.

Hinweis: Das Model für clay2py ist als UML-Diagramm unter docs zu finden, ist für einen ersten Überblick vermutlich ganz interessant.