web-dev-qa-db-ja.com

AttributeError:モジュール 'mysql'に属性 'connector'がありません

私はUbuntu 16.04を実行していて、Pythonでmysqlに接続しようとしています。

    import mysql
    username = 'root'

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

しかし、エラーが発生します:

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

Mysql pythonパッケージをダウンロードしてモジュールをインストールしました ここSudo apt-get install python-mysql.connectorを試してみましたが、役に立ちませんでした。ポインタはありますか?

編集:import mysql.connectorを追加した後、無関係な権限エラーが発生しましたが、これを解決しました。

9
planpony69

解決策は次を実行することです:

import mysql.connector # or from mysql import connector

モジュールconnectorは、明示的にインポートした場合にのみ使用できるためです。

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

モジュールmysql__init__ファイルは、モジュールconnectorをインポートしません。

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

これは、connector__init__とともにfrom . import connectorとともにインポートされた場合に暗黙的に機能する可能性があります。

8
PRMoureu

import mysql.connectorを実行して権限を確認した後も、同じエラーが発生しました。 MacOSでbashを使用してスクリプトを実行していました。解決策を何時間も検索した後、mysqlフォーラムでこの投稿を見つけました: https://forums.mysql.com/read.php?50,584171,584729#msg-584729

ポスターには、あなたのpythonスクリプトにmysql.pyという名前を付けることはできないため、types.pyという名前を付けたので、setup-types.pyに名前を変更しました。これで、同じエラーを処理するときに他の人が時間を節約できることを願っています。

5
Gail Sparks