MySQLdb wrapper erhält keine Connection

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
sedi
User
Beiträge: 104
Registriert: Sonntag 9. Dezember 2007, 19:22

Hallo zusammen,

habe mich heute mal mit MySQLdb beschäftigt und zum Reinschnuppern versucht einen Wrapper zu schreiben. Bin aber bereits beim Connecten hängen geblieben, nur warum?

Hier mein Modul ``mymy.py``:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

""" thin MySQLdb wrapper """

import MySQLdb as MYSQL


class MySQL(object):
    def __init__(self, host="", user="", passwd="", *args, **kwargs):
        self.host = host
        self.user = user
        self.passwd = passwd
        
        self.connection = None
    
    def connect(self, host="", user="", passwd=""):
        if host and user and password:
            self.connection.close()
            self.connection = None
            self.host = host
            self.user = user
            self.passwd = passwd
        
        self.connnection = MYSQL.connect(self.host,
                                         self.user,
                                         self.passwd)
    
    def __str__(self):
        if self.connection:
            conn = "connected"
        else:
            conn = "no connection"
        
        return  """MySQL:
    Host:       %s
    User:       %s
    Passwort:   %s
    Connection: %s""" % (self.host, self.user, "************", conn)
        

if __name__ == "__main__":
    db = MySQL("localhost", "root", "esrpwp")
    db.connect()
    print db
Und die Ausgabe bei ``python mymy.py`` zeigt keine Verbindung an :( :

Code: Alles auswählen

MySQL:
    Host:       localhost
    User:       root
    Passwort:   ************
    Connection: no connection
CU sedi
----------------------------------------------------------
Python 3.5; Python 3.6
LinuxMint18
BlackJack

@sedi: Du musst Dich einfach nur entscheiden `connnection` oder `connection` zu schreiben. ;-)
sedi
User
Beiträge: 104
Registriert: Sonntag 9. Dezember 2007, 19:22

oh mann sh...,

Danke @BlackJack
CU sedi
----------------------------------------------------------
Python 3.5; Python 3.6
LinuxMint18
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Ich halte es von der Namensgebung her für keine besonders gelungene Idee etwas unter dem Namen MYSQL zu importieren und dann noch eine Klasse namens MySQL zu definieren. Die Namen sind sich deutlich zu ähnlich und zu leicht verwechselbar.

Spätestens wenn man in einem Programm mal ähnliche Dinge wie die folgenden Werte hatte, dann weiß man wozu eine deutliche Unterscheidungsmöglichkeit gut ist:

Code: Alles auswählen

10, l0, lO
Antworten