Globalny dostęp do połączenia z bazą danych

Globalny dostęp do połączenia z bazą danych
K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 141
0

Cześć, piszę sobie program w Pythonie, który w kilku miejscach potrzebuje połączenia z bazą danych, w celu pobrania, wysłania czy zaktualizowania czegoś. Napisałem klasę DBConnection:

Kopiuj
class DBConnection:
    def __init__(self, dbhost, dbport, dbuser, dbpassword, dbname):
        self.host = dbhost
        self.port = dbport
        self.dbuser = dbuser
        self.password = dbpassword
        self.dbname = dbname
        self.conn = None

    def GetConnection(self):
        self.conn = pymysql.connect(host = self.host,
                                        port = self.port,
                                        user = self.dbuser,
                                        password = self.password,
                                        db = self.dbname,
                                        charset = 'utf8mb4',
                                        cursorclass = pymysql.cursors.DictCursor)
        return self.conn

która pozwala na stworzenie połączenia z bazą danych. I tutaj pojawia się pytanie co i w jaki sposób zrobić, żeby obiekt bazy został stworzony raz - np przy uruchamianiu programu, a dostęp do niej był możliwy z każdego miejsca w programie?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Poczytaj o wzorcu Singleton - przy czym dostęp z każdej części aplikacji brzmi prosto i czadowo tylko na początku rozwijania aplikacji, potem Cię to może porządnie zaboleć ;-]

Sugerowałbym mimo wszystko przepychać ręcznie klasę z połączeniem tam, gdzie jej potrzebujesz.

katelx
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Hong Kong
0

po prostu stworz go na poczatku programu a potem przekazuj jako argument funkcji/metody/konstruktora tam gdzie jest potrzebny

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.