[Python-de] Datenbank-Abstraktion

Henning.Ramm at mediapro-gmbh.de Henning.Ramm at mediapro-gmbh.de
Fre Jul 8 12:18:11 CEST 2005


Hallo mal wieder!

Es gibt ja eine ganze Menge objektorientierter Datenbank-Abstraktions-Layer für Python, und ich kann mich nicht entscheiden (und mag nicht Tage damit verbringen, sie im Einzelnen auszuprobieren, zumal die Doku meist ziemlich spärlich ist).
Meine eigene Lösung ist ziemlich suboptimal und sollte dringend ersetzt werden. ;-)

In meiner verteilten Anwendung laufen alle Datenbank-Verbindungen über einen Proxy-Server, der eigentlich die Belastung des eigentlichen Datenbankservers (MySQL) verringern sollte, indem Anfragen erst einmal aus dem Cache beantwortet werden und Updates auch nur geschrieben werden, wenn die Werte abweichen.

Die meisten Fälle lassen sich mit ein paar vordefinierten Standardabfragen behandeln; teilweise sind aber relativ komplexe Abfragen über mehrere Tabellen nötig - da wüsste ich nicht, wie ein objektorientierter Ansatz das ohne Abfragesprache hinkriegen kann. (Muss auch nicht sein, diese Queries können einfach durchgereicht werden.)

Anforderungen:
- Caching, mindestens so dass Wertzuweisungen, die nichts ändern, keine Query auslösen.
- Ich möchte andere Keys als die Datenbankfelder verwenden (z.B. 'id' statt 't1_datid'); das Mapping kann ich aber auch selber bauen.
- Die Werte in der Datenbank sind nur einfache Typen (String, Integer, Datum), also keine BLOBs oder so.
- muss mit NULL-Werten umgehen können
- Datenbank ist in ISO-8859-1, sonst arbeite ich mit Unicode
- nur MySQL nötig
- muss irgendwie mit Twisted zusammenpassen, d.h. ich muss Abfragen wahrscheinlich (wie bisher schon) in Threads auslagern.
- muss unter Win32, Python 2.3 funktionieren

Wer kann mir Empfehlungen geben zu...
- dabo (mit wx arbeite ich ohnehin)
- PyTable
- pSQL (kann wahrscheinlich zu wenig)
- SQLObject
- twisted.enterprise.row (kann zu wenig)
- weiteren?


Grüße vom Südsee!
Henning Hraban Ramm
Südkurier Medienhaus / MediaPro
Systembetreuung / Systementwicklung