Gekapselte Daten: Datenbank, Serialisierung oder doch Regex?

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
el_bobo
User
Beiträge: 23
Registriert: Dienstag 15. Januar 2008, 02:11

Hallo zusammen,

ich entwerfe (für mich selbst) im Moment einige Anwendungen, die gekapselte Daten einlesen. Also im Stil von einem Notizblock, dann sind die Daten eben die Notizen. Oder gesammelte Rechnungsinformationen, dann sind die einzelnen Daten die Rechnungen.

Bisher löse ich das sehr unschön mit Textdateien, die dann z.B. so aussehen:
%datum%%31.12.1999
%zeit%%23:59:59
%metainfo1%%abc
%metainfo2%blah
%text%%Hier steht Text mit newlines.
Das löse ich bisher so, dass der Rest der Datei (ab dem text-Tag) einfach als der Text behandelt wird.
Optimal ist das nicht.
Diese Lösung ist offensichtlich nicht sehr flexibel und wohl auch etwas umständlich.

Ich hatte angedacht, das eventuell in eine Datenbank zu packen. Allerdings habe ich damit sehr wenig Erfahrung. Außerdem wird auf die Daten immer nur von einem Programm zugegriffen. Und muß für eine Datenbank nicht ein Service/Server laufen?

Die andere Idee waren reguläre Ausdrücke, in die ich mich auch schon etwas eingelesen hatte. Dann könnte ich eine Datei im Html/Uml-Stil gestalten:
datum { blah }
...
text {
blah
blub
}
...
Jedoch kenne ich die Vor- und Nachteile davon nicht.

Die letzte Idee war, einfach die Objekte, in denen der Input gespeichert wurde ("pro Input ein Objekt") zu serialisieren. Allerdings ist mir das auch etwas suspekt.

Also sorry für den langen Text, aber die Frage ist: wie handhabt man diese Problemstellung?

Es sollte sich ja im eine gängige Aufgabe handeln. Also bedanke ich mich schon einmal für Antworten.

Grüße,
el_bobo
Crush
User
Beiträge: 44
Registriert: Montag 1. Mai 2006, 11:32

Hallo

Ich habe das früher meist mit einem eigenen Text-Format gelöst (wie in deinem Vorschlag). Dabei ist wichtig, dass du davon ausgehst, dass der Benutzer auch das Trennzeichen selbst (hier jetzt das %-Zeichen) als Daten eingeben kann. Somit musst du eine art "Escape-Sequenz" für dieses Zeichen einführen, damit es nicht als Trennzeichen gesehen wird.

Ansonsten verwende ich gerne eine sqlite-Datenbank und die Python-Anbindung dazu, die seit python2.5 in der Standardbibliothek vorhanden ist. Dazu findest du hier mehr: http://www.sqlite.org/ und http://www.initd.org/tracker/pysqlite

Gruss Crush
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Hallo!

Von was für Datenmengen reden wir denn? Wenn Du zehn oder zwanzig Datensätze speichern musst, dann pack doch einfach jeden in ein Dictionary und lass pickle darauf los. Wenn es tausende sind, macht ein Datenbanksystem wahrscheinlich mehr Sinn.

Gruß,
Bernhard
BlackJack

Auf jeden Fall sollte man das jetzige Format durch `csv` (gut für mehrere Datensätze in einer Datei), oder `ConfigParser` ersetzen.

Wenn es nicht von Benutzern in einem normalen Texteditor gelesen werden muss, dann `pickle` oder `shelve`.

Falls es doch von anderen Leuten oder Programmen gelesen werden können muss, JSON (z.B. `simplejson`) oder XML.

Das wären die einfachen Alternativen zur Datenbank. Bei Datenbanken bietet sich SQLite als "Einstiegsdroge" an.
Antworten