Gibt es ein globales object-dictionary?

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
barfoos
User
Beiträge: 25
Registriert: Dienstag 29. Juli 2008, 09:46

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

globals(), locals() dürfte dir da weiterhelfen ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
barfoos
User
Beiträge: 25
Registriert: Dienstag 29. Juli 2008, 09:46

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten