Seite 1 von 1

Gibt es ein globales object-dictionary?

Verfasst: Mittwoch 26. November 2008, 09:12
von barfoos
Hallo

parallel zur meiner OO-Datenstruktur verwende ich eine SQLite Datenbank, um die Daten schnell nach verschiedenen Kriterien zu durchsuchen.
Es sind zwar alle Objekte in der Datenbank enthalten, aber nicht mit allen ihren Attributen.

Jetzt suche ich einen Weg, wie ich Objekte, die ich durch Datenbankabfragen gefunden habe, in Python "wiederzufinde".

Ich könnte mir ein eigenes dictionary pflegen. In der Datenbank, würde ich dann zu jedem Eintrag noch einen Schlüssel ablegen, an Hand dessen ich bei Bedarf im dictionary das zugehörige Python-Objekt finden kann.

Ich habe aber die Vermutung, dass es so ein Dictionary evtl schon in Python gibt. Z.b. im Garbage Collector vermute ich ein solches. Evtl. aber auch direkt in Python irgendwo.

Gibt es so ein globales Object-Dictionary?
Gibt es andere Vorschläge, wie man effizient über Datenstrukturen navigiert, die Teils in einer Datenbank und teils als Objektstruktur vorliegen?

Danke und gruß
barfoos

Verfasst: Mittwoch 26. November 2008, 14:31
von cofi
globals(), locals() dürfte dir da weiterhelfen ;)

Verfasst: Mittwoch 26. November 2008, 14:40
von Leonidas
Also mir scheint der Weg, Objekte halb in der DB und halb woanders zu serialisieren schlechtweg falsch zu sein. Wenn man es an einer Stelle pflegt hat man weniger Redundanz und eben keine solchen Probleme wie hier.

Und ``globals``/``locals`` helfen im dem Fall gar nicht weiter. Da würde man eher ein Modul als Singeton nutzen und dort die Objekte an irgendwelche Namen binden (oder an ein normales Dictionary). Ist aber meiner Meinung nach generell ein schlecher Ansatz.

Verfasst: Mittwoch 26. November 2008, 14:48
von barfoos
Leonidas hat geschrieben:Also mir scheint der Weg, Objekte halb in der DB und halb woanders zu serialisieren schlechtweg falsch zu sein. Wenn man es an einer Stelle pflegt hat man weniger Redundanz und eben keine solchen Probleme wie hier.

Und ``globals``/``locals`` helfen im dem Fall gar nicht weiter. Da würde man eher ein Modul als Singeton nutzen und dort die Objekte an irgendwelche Namen binden (oder an ein normales Dictionary). Ist aber meiner Meinung nach generell ein schlecher Ansatz.
Im Grunde stimme ich dir zu.

Ich habe den Mittelweg gewählt, weil es sich um eine große Datenmenge handelt, die sich nicht ändert. Das Suchen von Daten lässt sich mit SQL in meinem Fall wesentlich schöner beschreiben, als mit handcodierten Suchindizes und die Synchronhaltung ist bei statischen Daten auch kein Problem. Andererseits möchte ich nicht alle meine Daten in die Datenbank packen, weil das ab einer gewissen Tiefe für mich keinen Sinn mehr ergibt, denn diese Daten muss ich praktisch nie durchsuchen.
Also brauche ich ab dieser Tiefe einen Weg raus aus der Datenbank hin zu den Objekten.

Ich vermute, wenn es eine objektorientierte Datenbank gäbe, die mit SQLite mithalten könnte, dann wäre das was für mich. Ich hab auch gehört, das Microsoft in C# (oder .NET allgemein?) eine embedded query language einbauen will (oder schon hat?), die sowas ähnliches realisiert.

Gibt es denn für Python irgendwelche Ansätze eine query language zu integrieren?

danke und gruß
barfoos

Verfasst: Mittwoch 26. November 2008, 14:52
von Leonidas
barfoos hat geschrieben:Ich vermute, wenn es eine objektorientierte Datenbank gäbe, die mit SQLite mithalten könnte, dann wäre das was für mich. Ich hab auch gehört, das Microsoft in C# (oder .NET allgemein?) eine embedded query language einbauen will (oder schon hat?), die sowas ähnliches realisiert.
Ein RDMBS plus ORM bietet dir auch Objektorientierung, sogar mit SQLite als Basis. Was du meinst ist LINQ, oder?
barfoos hat geschrieben:Gibt es denn für Python irgendwelche Ansätze eine query language zu integrieren?
Gibts schon, nennt sich SQLAlchemy und ist älter als LINQ in C# 3.0.