Problem z menadżerem kontekstu

Problem z menadżerem kontekstu
DR
  • Rejestracja:prawie 15 lat
  • Ostatnio:4 miesiące
0

Podczas wysyłania zapytania sql do serwera pojawia sie poniższy błąd:

Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
with UseDatabase(dbconfig) as cursor:
TypeError: UseDatabase() takes no arguments

zapytanie wygląda następująco:

Najpierw importuję klasę menadżera kontekstu z pliku DBcm.py:

Kopiuj
from DBcm import UseDatabase

Następnie tworzę słownik z właściwosciami połączenia:

Kopiuj
dbconfig={'host': '127.0.0.1',
        'user': 'myuser',
        'password': 'mypassword',
        'database': 'mydatabase',}

No i używam menadżera kontekstu:

Kopiuj
with UseDatabase(dbconfig) as cursor:
        _SQL="""show tables"""
        cursor.execute(_SQL)
        data=cursor.fetchall()

No i po wywołaniu tego pojawia się błąd, który zamieściłem na początku. Plik z klasą menadżera kontekstu wygląda następująco:

Kopiuj
import mysql.connector
class UseDatabase:
      def _init_(self, config: dict) -> None:
            self.configuration=config
      def _enter_(self) -> 'cursor':
            self.conn=mysql.connector.connect(**self.configuration)
            self.cursor=self.conn.cursor()
            return self.cursor
      def _exit_(self, exc_type, exc_value, exc_trace) -> None:
            self.conn.commit()
            self.cursor.close()
            self.conn.close()

Oczywiście proszę o pomoc w rozwiązaniu problemu.

edytowany 1x, ostatnio: dretred
lion137
JAk nie ma, a co ma być skoro robisz jakies dziwne rzeczy :) , cytat? Weź to sformatuj
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około godziny
  • Postów:4935
2

def init(self, config: dict) -> None:
A powinno być def __init__(self, config: dict) -> None:


DR
  • Rejestracja:prawie 15 lat
  • Ostatnio:4 miesiące
0
lion137 napisał(a):

def init(self, config: dict) -> None:
A powinno być def __init__(self, config: dict) -> None:

Tekst kopiowałem z pliku i nie skopiowały się podkreślenia. Ale zwróciło to moją uwagę na to, że nie zrobiłem dunderów tylko pojedyncze podkreślenia. Poprawiłem i jest ok. Dziękuję bardzo za pomoc.

edytowany 1x, ostatnio: dretred

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.