Seite 1 von 1

DB-Connection an ein anderes Modul weitergeben

Verfasst: Montag 11. Juli 2016, 17:29
von masterego
hallo,
ich befinde mich in folgender Situation:
Meine Datenbank-Anwendung (MySQL) besteht aus 3 Modulen: Hauptmodul, ein Datenmodul mit etlichen Funktionen und ein Modul mit diversen Dialogen, die aus dem Hauptmodul aufgerufen werden. Einige der Dialoge im Dialog-(Sammel)Modul haben Ereignisprozeduren, die auf die DB zugreifen müssen.
Meine Frage: Wie kann ich diesem Dialog-Modul die bereits bestehende DB-Connection weitergeben? Und ist das überhaupt sinnvoll, oder sollte man die in der betreffenden Prozedur dieses Moduls jeweils bei Bedarf erstellen? Nur die Zugangsdaten müsste ich ja auch irgendwie an dieses Modul weitergeben können.
Ich habe versucht, die DB-Connection in eine globale Variable des Dialog-Moduls zu übertragen. Aus der Ereignisprozedur des Dialogs wird diese aber nicht gekannt. Warum?

Re: DB-Connection an ein anderes Modul weitergeben

Verfasst: Montag 11. Juli 2016, 20:43
von BlackJack
@masterego: Man gibt Daten nicht an Module weiter sondern an Funktions- oder Methodenaufrufe. Übergib die Datenbankverbindung einfach als Argument.

Re: DB-Connection an ein anderes Modul weitergeben

Verfasst: Dienstag 12. Juli 2016, 19:47
von masterego
Ja genau ;)
Das mache ich auch so mit dem anderen Modul, in dem ich meine ganzen Funktionen reingepackt habe. Klappt prima. das Problem bei dieser Sache ist nur, dass es eine ereignisgesteuerte Prozedur innerhalb des Dialogs ist, die die Datenverbindung benötigt. Und die kann ich ja nicht vom Hauptmodul aus mit dem Argument der Datenbankverbindung aufrufen. Deswegen weiss ich nicht weiter.

Re: DB-Connection an ein anderes Modul weitergeben

Verfasst: Dienstag 12. Juli 2016, 20:05
von BlackJack
@masterego: Closures oder objektorientierte Programmierung (OOP). Wobei OOP in Python in der Regel die offensichtlichere Wahl ist.

Re: DB-Connection an ein anderes Modul weitergeben

Verfasst: Dienstag 12. Juli 2016, 20:38
von masterego
Vielen Dank. Werde es mit beiden mal probieren. Bin sowieso nur am Rumspielen.