csv orm modell

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Ich möchte aus Spaß ein ORM für CSV schreiben. Nun frage ich mich, ob es möglich ist aus folgender Dekleration möglich ist, herauszufinden, welches Feld sich an welcher Stelle befindet.

Code: Alles auswählen

class SomeCSV(Model):
    first = Field()
    second = Field()
    third = Field()
Die Metaklasse bekommt zur Initialisierung ja nur ein Dictionary übergeben. Kann man nun trotzdem ohne große Hacks die Reihenfolge rekonstruieren?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Ich wüsste jetzt nicht wie, aber selbst wenn, wäre das nicht ungefährlich: Das spätere vertauschen von Zeilen, was normalerweise unkritisch ist, könnte dann fatal sein. Eventuell brauchst Du ein weiteres Attribut wie z.B. "FieldOrder", welches die Anordnung der Felder explizit auflistet.
BlackJack

@jbs: Du könntest den `Field`-Objekten ein Attribut mit einer Zahl verpassen, so dass jedes Objekt dort einen höheren Wert bekommt als alle davor erstellten. Dann kannst Du sie problemlos nach relativem Zeitpunkt der Erstellung über dieses Attribut sortieren und bekommst so auch die Reihenfolge heraus in der sie in der Klasse angelegt wurden.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Meine - zugegeben nicht wirklich schöne - Idee ist, den Feldern eine ID zuzuordnen, die automatisch beim Erstellen angelegt und hochgezählt wird.


Jedenfalls vielen Dank für eure Antworten :)
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Deine "nicht wirklich schöne" Idee ist was alle deklarativen APIs dieser Art machen.
lunar

@jbs In Python 3 kannst Du auch eine Metaklasse mit "__prepare()__" implementieren, und dort ein "OrderedDict" zurückgeben, siehe PEP 3115.
Antworten