Python3からMySQLを操作したよ on Mac

その他MySQL, Python, macOS

どうもお久しぶりです・・・・。主に就活のせいで最近開発ができないため、記事の更新も滞っちゃいました。
今回はそんな隙間時間を使って作業を進められたので、記事も書きます。

というわけで、今回はMac上のPython3からMAMPで導入したMySQLを操作するということをやって行きます。
今回の記事では”mysqlclient”というのをインストールします。



OS : macOS Sierra


1. 下準備

さて、まずは準備としてMAMPとHomebrewを導入しておいてください。

Homebrewは以下のコマンドでインストールすることができます。

MAMPは公式サイトからダウンロード&インストールすることができます。今回は、すでにインストールされていることを前提にします。と言っても普通のアプリをインストールするのと変わらないのでつまずくことはあまりないと思います。

2. インストール

さて、早速”mysqlclient”をインストールします。インストールはpipを使って簡単にできます。”pip”がインストールされていなければ、”easy_install pip”なんかでインストールすることができると思います。

“mysqlclient”のインストールする際にエラーが出たら、大方”OSError: mysql_config not found”という感じに「mysql_configが無いぜお」と言われると思います。その時は、以下のコマンドを実行してからもう一度pipを実行して見てください。

もし仮にdebian系の端末ですと、以下のコマンドです。

これでインストールは完了です。
あとはコード内で”import MySQLdb”を呼び出すことで使っていってください。

3. MySQLdb.connectができない時

今回の目標はMAMPのMySQLにPythonからアクセスすることでした。しかし、デフォルトのままでは「_mysql_exceptions.OperationalError: (2002, “Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)”)」というsocketファイルがないよ的なエラーが発生してうまく動作してくれません。これは、大多数のシステムのデフォルトである、tmpディレクトリにソケットファイルが生成されないためです。ちなみに、MAMPのデフォルトでは、”/Applications/MAMP/tmp/mysql/mysql.sock”という箇所にあるようです。対策としては、設定ファイルを書き換えたり、リンクを作成する方法なんかがあるようですが、今回はPythonのコード内で解決しようと思います。

方法は単純で、コード内のデータベースとの接続部分である”MySQLdb.connect”の命令に渡す引数に”unix_socket”という項目を追加するだけです。これを踏まえまして、以下のように記述すれば正しく接続してくれると思います。

ちなみにMAMPのMySQLにデフォルトで設定されているユーザ名とパスワードは両方とも”root”です。

おわりに

さて、今回は簡単にですが、PythonからMySQLを操作する環境を整えました。
役に立つといいなぁと思います。


コーディングで分からないことがあれば
プログラミングや環境構築で分からないことがあったら『teratail』というエンジニア特化型のQ&Aサービスがオススメです。自分もどうしても分からないことがあったら、時々質問しにいきますが、かなりニッチな質問にも意外と早く回答がつくのでとても頼もしいです。という宣伝でした。