Ich habe vor ein paar Tagen damit angefangen ein Programm mit Python zu schreiben und stehe jetzt vor folgendem Problem:
Ich greife mit dem Programm auf eine MySQL Datenbank zu, dass funktioniert auch soweit einwandfrei mit der Einschränkung das ich in jeder Klasse die Daten einliest und/oder manipuliert eine eigene MySQL Verbindung öffnen muss.
Und jetzt zu meiner Frage: Gibt es die Möglichkeit in Python Variablen zu definieren auf die von überall aus dem Programm zugegriffen werden kann? Eventuell gibt es ja gar eine elegantere Lösung für mein Problem.
Python Klassenübergreifende Variablen
@BELzEBUB: Du könntest Deinen Klassen eine bestehende MySQL-Verbindung in der `__init__()` übergeben. Oder ein eine Verbindung in einem Modul ablegen, dass von allen Modulen, die die Verbindung benötigen importiert wird.
Das ist genau was ich vermeiden wollteBlackJack hat geschrieben:@BELzEBUB: Du könntest Deinen Klassen eine bestehende MySQL-Verbindung in der `__init__()` übergeben.
Das hört sich nach der Lösung an die ich gesucht habe. Werde ich gleich mal testen.BlackJack hat geschrieben:Oder ein eine Verbindung in einem Modul ablegen, dass von allen Modulen, die die Verbindung benötigen importiert wird.
@BELzEBUB: Warum möchtest Du das vermeiden? Je mehr globale Variablen in einem Programm, desto mehr Zustand musst desto komplexer die Abhängigkeiten. Wenn erst mal das ganze Programm auf einer globalen Datenbankverbindung arbeitet, wird es ein schönes Stück Arbeit, die Art des Datenbankzugriffs zu verändern (e.g. SQLAlchemy einzuführen), oder das Programm mal zu parallelisieren.
Ich verstehe deine Argumente vollkommen warum es nicht besonders sinvoll ist. Da aber nur abundzu auf die Datenbank zugeriffen wird und auch nie mehr als eine Verbindung gleichzeitig benötigt wird finde ich die Arbeit mit einer globalen Verbindung einfacher.