web-dev-qa-db-fra.com

AttributeError: le module 'mysql' n'a pas d'attribut 'connector'

J'utilise Ubuntu 16.04, essayant de me connecter à mysql en python:

    import mysql
    username = 'root'

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

Mais je reçois une erreur:

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

J'ai installé le mysql python en téléchargeant le paquet ici . J'ai essayé Sudo apt-get install python-mysql.connector en vain. Des pointeurs?

EDIT: après avoir ajouté import mysql.connector J'ai une erreur d'autorisations non liée que j'ai maintenant résolue, c'est donc ce dont j'avais besoin!

9
planpony69

La solution consiste à exécuter:

import mysql.connector # or from mysql import connector

Parce que le module connector n'est disponible que lorsque vous l'importez explicitement:

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']

Le __init__ fichier dans le module mysql n'importe pas le module connector.

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

Cela pourrait fonctionner implicitement si connector était importé dans __init__ avec : from . import connector.

8
PRMoureu

J'obtenais toujours la même erreur après import mysql.connector et vérification des autorisations. J'exécutais mon script sur MacOS en utilisant bash. Après des heures de recherche d'une solution, je suis tombé sur ce post sur les forums mysql: https://forums.mysql.com/read.php?50,584171,584729#msg-584729

L'affiche mentionne que votre script python ne peut pas être nommé mysql.py Mon script a été nommé types.py, donc je l'ai renommé setup-types.py et cela a résolu mon problème. Espérons que cela fasse gagner du temps aux autres lorsqu’il s’agit de la même erreur.

5
Gail Sparks