MySQL Connection not available

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Odin
User
Beiträge: 20
Registriert: Samstag 5. September 2015, 10:11

Hallo zusammen,
ich habe angefangen mir ein kleines Programm zu schreiben, das den Datenverkehr zwischen meinem Server und meinem Rechner/Laptop regeln soll.
Ich habe gestern die Datenbank installiert und folgendes Test-Programm laufen lassen:

Code: Alles auswählen

import mysql.connector

cnx = mysql.connector.connect(user='test', password='lollol',
                              host='127.0.0.1')
cursor = cnx.cursor()   #Eingefügt nachdem der Fehler im eigendlichen Programm aufgetaucht ist
cnx.close()
Es lief zu jederzeit problemlos.
Anschließend habe ich folgenden Codeausschnitt in meinem Projekt implementiert:

Code: Alles auswählen

cnx = -1
    cursor = -1
    try:
        cnx = mysql.connector.connect(user, passwort, host)
        
    except mysql.connector.Error as err:
        if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
            print(c.color.RED+"ERROR: Die Logindaten sind fehlerhaft."
                  +c.color.END)
            exit()
        else:
            print(err)
            exit()

    cursor = cnx.cursor()  # Zeile 48
Heraus kam folgender Fehlercode:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Users\Deus\Desktop\python\Server\main.py", line 87, in <module>
    main()
  File "C:\Users\Deus\Desktop\python\Server\main.py", line 26, in main
    initDB()
  File "C:\Users\Deus\Desktop\python\Server\main.py", line 48, in initDB
    cursor = cnx.cursor()
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 1383, in cursor
    raise errors.OperationalError("MySQL Connection not available.")
mysql.connector.errors.OperationalError: MySQL Connection not available.
Da dies erst meine zweites Pythonprogramm ist (LOC >30) nehme ich mal an das ich hier aus
Gewohnheit etwas mache was bei Python nicht geht und es deshalb nicht sehe.
Kann mich jemand aufklären?

Gruß
Odin
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Odin hat geschrieben:

Code: Alles auswählen

cnx = mysql.connector.connect(user='test', password='lollol',
                              host='127.0.0.1')

Code: Alles auswählen

        cnx = mysql.connector.connect(user, passwort, host)
Die beiden Aufrufe sehen schon unterschiedlich aus. Ich habe noch nie mit dieser Bibliothek gearbeitet, aber ich würde vermuten, dass du explizit Keyword-Parameter angeben musst.
Odin
User
Beiträge: 20
Registriert: Samstag 5. September 2015, 10:11

explizit Keyword-Parameter?
also funktion(xyz=42) oder was bedeutet das?

EDIT:

Code: Alles auswählen

cnx = mysql.connector.connect(user=user, password=passwort, host=host)
So funktioniert es, aber ich verstehe nicht warum.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Odin hat geschrieben:So funktioniert es, aber ich verstehe nicht warum.
Vermutlich aus einem ähnlichen Grund, warum die beiden folgenden Aufrufe von do_something unterschiedliche Ergebnisse liefern.

Code: Alles auswählen

def do_something(a=1, b=1, c=1, d=1):
    print(b * c * d)

do_something(2, 2, 2)
do_something(b=2, c=2, d=2)
Ohne die Angabe des expliziten benannten Arguments landen die Daten halt woanders.

Wird es dadurch klar oder brauchst du es noch detaillierter?
Odin
User
Beiträge: 20
Registriert: Samstag 5. September 2015, 10:11

Jetzt ist es klar.
Danke.
Antworten