Seite 2 von 2

Re: Lesen und Schreiben von Klassen in CSV

Verfasst: Sonntag 21. November 2021, 12:33
von snafu
__deets__ hat geschrieben: Freitag 19. November 2021, 13:46 Wenn man will, kann man ja aber auch https://docs.python.org/3/library/dataclasses.html benutzen. Das ist vielleicht nicht ganz so umfangreich, aber vieles kann es eben auch schon.
Ich finde sogar, dass sich dataclasses besser in die Sprache einfügt als dieses attrs-Modul. Da brauche ich nur den @dataclass-Dekorator an die Klasse kleben und habe direkt die benötigte Magie.

Und mit SQLAlchemy geht es wohl so: https://docs.sqlalchemy.org/en/14/orm/m ... tive-table

Re: Lesen und Schreiben von Klassen in CSV

Verfasst: Sonntag 21. November 2021, 12:36
von __deets__
Für attrs geht das wohl so: https://docs.sqlalchemy.org/en/14/orm/m ... tive-table - aber das backend ist doch immer noch nicht CSV, was bringt das einem?

Re: Lesen und Schreiben von Klassen in CSV

Verfasst: Sonntag 21. November 2021, 12:39
von snafu
Und hier hat jemand ein Modul gebastelt, das dataclasses mit CSV-Daten befüllen kann: https://pypi.org/project/dataclass-csv/

Re: Lesen und Schreiben von Klassen in CSV

Verfasst: Sonntag 21. November 2021, 13:50
von zegru
__deets__ hat geschrieben: Sonntag 21. November 2021, 12:32 Das ist aber auch alles ganz schön viel Maschinerie. Über wieviele Klasse reden wir denn hier? Denn man kann das bei einigen wenigen ja auch einfach erstmal “zu Fuß” programmieren. Die ganze Meta-Magie ist fein, aber auch oft etwas undurchdringbar.
Eben. Ich dachte, das wäre eventuell ganz einfach, sowas wie "importier einfach dieses Modul hier". Es scheint sich aber, wenn es mal funktionieren sollte, um einen ziemlichen Aufriss zu handeln. Es handelt sich auch bei mir um eine einzige Klasse, deshalb ist es das einfachste, wenn ich das mit weniger Library-Unterstützung mache, sonst schieße ich mit Kanonen auf Spatzen und fahre 10x soviel Boilerplate Code ein, um etwas zu sparen. Sparen um jeden Preis!
Aber als Sekundäreffekt gab es viele wertvolle Einsichten in Python. Danke!

Re: Lesen und Schreiben von Klassen in CSV

Verfasst: Sonntag 21. November 2021, 14:00
von __deets__
Na für eine Klasse ginge das Modul von snafu, dataclasses_csv.

Re: Lesen und Schreiben von Klassen in CSV

Verfasst: Sonntag 21. November 2021, 14:27
von snafu
@zegru
Also eine Bibliothek empfiehlt sich dafür schon, damit man eben nicht alles zu Fuß machen muss. Dein Problem ist eher, dass du noch keinen einfachen Ansatz für dein Vorhaben gefunden hast. Wie gesagt, schau dir mal das dataclass-csv Modul näher an.

Hier etwas Beispiel-Code aus der Doku:

Code: Alles auswählen

@dataclass
class User:
    firstname: str
    email: str
    age: int

with open(filename) as users_csv:
    reader = DataclassReader(users_csv, User)
    for row in reader:
        print(row)
Also eigentlich relativ simpel und die Typ-Umwandlungen gibt's gratis dazu. Oder entspricht das nicht dem, was du dir vorgestellt hast?

Re: Lesen und Schreiben von Klassen in CSV

Verfasst: Sonntag 21. November 2021, 15:53
von zegru
Leider kann ich ja dataclass nicht verwenden, da ich ja auch SQLAlchemy für meine Klasse hernehme. Ich verwende jetzt halt das Modul csv und habe eine zusätzliche Methode in der Klasse Test geschrieben, die mir die einzelnen Felder als Tupel zurück liefert. Ich iteriere dann über eine Liste von Test Objekten und rufe dort mit csv.writerow() das Ergebnis des Tupellieferanten des Objekts zurück. Lediglich Felder->Tupel mache ich also manuell.

Re: Lesen und Schreiben von Klas

Verfasst: Sonntag 21. November 2021, 16:05
von __deets__
Ahhhh. Das ist mir entgangen, dass es auch um SA Objekte geht. Aber dafür hat Snafu doch eine Integration von, \ SA & dataclasses gezeigt. Ob das dann in der Summe immer noch mit dataclasses_csv arbeitet, musst du ausprobieren.

Re: Lesen und Schreiben von Klassen in CSV

Verfasst: Sonntag 21. November 2021, 16:59
von snafu
Okay, wenn die dataclass wirklich nur Mittel zum Zweck ist und eigentlich nicht benötigt wird, dann würde ich den Gedanken wieder verwerfen. Ein Modul für die Umwandlung von SQLAlchemy-Klassen in CSV kenne ich nicht und habe auf die Schnelle auch nichts dazu gefunden. Da bleibt dir wohl nur der händische Weg, den du ja offenbar auch schon gehst.