[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