spezielles Textfile auslesen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Gerhardus
User
Beiträge: 42
Registriert: Dienstag 31. Dezember 2013, 01:59

Hallo,
Ich habe mich länger nicht mit Python beschäftigt, würde aber gerne einen Ratschlag bekommen, mit welcher Methode ich am einfachsten
Daten aus einer Textdatei auslese in einer Tabelle einfüge die ich nach Änderungen in einer Datenbank abspeichere. Die Daten in der Textdatei sind so vorhanden:

001
01Müller
02Peter
045
0523
07129350;25456
0025
01Meier
02Paul
043
0512
0738000;12500
00..
01..
.....
Die beiden erste Ziffern haben jeweils folgende Bedeutung und wären die entsprechenden Feldnamen, wobei die Punkte in 2 Feldern aufgeteilt werden müssen.
00 ID Nr.
01 Name
02 Vorname
04 Klassenzugehörigkeitscode
05 Vereinsnummer
07 Punkte insgesamt;Punkte laufend

Ich habe dies vor sehr langer Zeit mit VB2003 gemacht, wobei ich die Zeilen mit readline ausgelesen habe und
jeweils als Eigenschaft in MitgliederObjekte gespeichert habe.
Erscheint mir aus heutiger Sicht etwas zu aufwendig. Gibtes einen einfacheren Weg?

LG Gerhardus
BlackJack

@Gerhardus: Ich würde die Zeilen in Kennziffern und Rest trennen und dann nach Blöcken die mit '00' beginnen gruppieren. Falls Datenbank hier eine relationale Datenbank die von SQLAlchemy unterstützt wird, gemeint ist, würde ich das ORM von SQLAlchemy verwenden. Dann kann man mit einer Abbildung von Kennnummer auf Datentyp/Konvertierungsfunktion und Zielschlüssel die einzelnen Blöcke auf Wörterbücher abbilden die man dann als Argumente zum Erstellen von den ORM-Objekten verwenden kann, um die dann in der Datenbank zu speichern.

'07' müsste man irgendwo besonders behandeln, weil es ja auf zwei Attribute aufgeteilt werden müsste. Das könnte man in einer überschriebenen `__init__()` bei der ORM-Klasse erledigen.
Gerhardus
User
Beiträge: 42
Registriert: Dienstag 31. Dezember 2013, 01:59

SQLAlchemy ist neu für mch. Werde mir das ORM anschauen und vielen Dank für die Hinweise.
Gerhardus
Antworten