私は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
を追加した後、無関係な権限エラーが発生しましたが、これを解決しました。
解決策は次を実行することです:
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
とともにインポートされた場合に暗黙的に機能する可能性があります。
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
に名前を変更しました。これで、同じエラーを処理するときに他の人が時間を節約できることを願っています。