[Python-de] Grafische Oberfläche
Stefan Schwarzer
sschwarzer at sschwarzer.net
Sam Okt 29 14:13:18 CEST 2005
Hallo Jürgen,
On 2005-10-29 12:05, Juergen Hermann wrote:
> On Sat, 29 Oct 2005 10:38:59 +0200, maillist at moevy.net wrote:
>
>> Ich habe im Web ein kleines Produktionsmanagement programmiert.
>>Dies möchte ich nun auch nativ mit Python realisieren. Da habe ich in
>>Foren rumgefragt und da hiese es das man das nicht mit mysql machen
>>würde. Warum auch immer. Eine andere Antwort habe ich noch nicht bekommen.
>
> Sofern man SQL braucht, nehme man DBAPI2. Dann kann's Dir wurscht
> sein, wo die Daten effektiv landen, bis auf den
> Installationszeitpunkt.
meiner Meinung nach ist das zu sehr vereinfacht.
- Verschiedene Datenbanken verwenden unterschiedliche SQL-Dialekte, die
sich subtil unterscheiden können. Die SQL-Anweisungen beim Übergang
auf ein anderes Datenbanksystem zu ändern, kann fehleranfällig sein.
- Verschiedene Datenbankadapter können, auch wenn sie sich prinzipiell
an die DB-API halten, unterschiedliche Parameterübergabeformate
verwenden (siehe http://www.python.org/peps/pep-0249.html ,
Abschnitt zu "paramstyle").
- Datenbankadapter können sich in den Exceptions unterscheiden, mit
denen sie auf bestimmte Fehlersituationen reagieren. Theoretisch
schreibt die DB-API zwar vor, wann welche Exceptions zu verwenden
sind, aber mitunter verstehen die Autoren die DB-API-Dokumentation
unterschiedlich.
- Datenbanken unterscheiden sich in ihren Fähigkeiten. Was in einer
geht, erzeugt bei einer anderen u. U. einen "NotSupportedError".
- Wenn man eine bisher verwendete Datenbank im Nachhinein (z. B. aus
Geschwindigkeits- oder Wartungsgründen) gegen eine andere austauschen
muss, muss man normalerweise die Daten migrieren.
Im Kern hast du schon Recht. Man sollte möglichst (wenn man überhaupt
eine SQL-Datenbank verwenden will) Datenbankadapter nutzen, die sich an
die DB-API halten. Aber daraus zu schließen, dass man bei der Verwendung
einer anderen als der ursprünglich geplanten Datenbank womöglich nur die
Import-Anweisung für das entsprechende Pythonmodul ändern muss, stimme
ich nicht zu. :-)
Viele Grüße
Stefan