2017-09-30 2 views
3

Ich bin mit Ubuntu 16.04, versuchen, mysql in Python zu verbinden:Attribute: Modul 'mysql' hat kein Attribut 'Anschluss'

import mysql 
    username = 'root' 

    cnx = mysql.connector.connect(user=username, database='db') 
    cnx.close() 

Aber ich erhalte eine Fehlermeldung:

File "pysql1.py", line 4, in <module> 
     cnx = mysql.connector.connect(user=username, database='db') 
    AttributeError: module 'mysql' has no attribute 'connector' 

Ich habe das mysql Python-Modul installiert, indem ich das Paket here heruntergeladen habe. Ich versuchte sudo apt-get install python-mysql.connector ohne Erfolg. Irgendwelche Zeiger?

BEARBEITEN: nachdem ich import mysql.connector hinzugefügt habe, habe ich einen nicht verwandten Erlaubnisfehler, den ich jetzt aufgelöst habe, also das ist, was ich ty Lose benötigte !!!

+1

versuchen Sie es mit 'import mysql.connector' – PRMoureu

+0

Mögliches Duplikat von [Exception 'Modul hat keine Attributverbindung' - Python mysql] (https://stackoverflow.com/questions/24062113/exception-module-has-no-attribute -connector-python-mysql) – Kev1n91

+0

@ kev1n91 das scheint über '_mysql' zu sein, von dem ich noch nie gehört habe. Am Ende der oberen Antwort schlagen sie vor, dass es einige Verwirrung über Bibliotheken gibt – roganjosh

Antwort

4

Die Lösung ist auszuführen:

import mysql.connector # or from mysql import connector 

Da das Modul connector nur verfügbar, wenn Sie es explizit importieren:

import mysql 

print(dir(mysql)) 
>>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', 
'__package__', '__path__', '__spec__'] 

import mysql.connector 

print(dir(mysql)) 
>>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', 
'__package__', '__path__', '__spec__', 'connector'] 

Die __init__ Datei im Modul mysql nicht Importieren Sie das Modul connector.

mysql 
|_______ __init__.py # no import at this level 
|_______ connector 
     |________ __init__.py 

Dies könnte implizit funktionieren, wenn connector innerhalb __init__ mit importiert wurde: from . import connector.

+0

Yep, die Struktur bleibt, nur ein Import auf Modulebene kann es einfacher machen – PRMoureu

+1

Was mich wundern lässt, warum sie es nicht so implementiert haben, aber ich schätze, du bist dafür nicht verantwortlich :) – roganjosh

0

Ich bekam immer noch den gleichen Fehler nach import mysql.connector und Überprüfung der Berechtigungen. Ich habe mein Skript auf MacOS mit bash ausgeführt. Nach Stunden nach einer Lösung zu suchen, kam in diesem Beitrag auf den MySQL-Foren: https://forums.mysql.com/read.php?50,584171,584729#msg-584729

Das Plakat erwähnt, dass Ihr Python-Skript nicht mysql.py Mein Skript benannt wurde types.py benannt werden kann, so dass ich es umbenannt zu setup-types.py und gelöst mein Problem. Hoffentlich spart dies anderen einige Zeit, wenn sie mit demselben Fehler konfrontiert werden.

Verwandte Themen