方法だけ知りたければ3番までスキップしてください。
いきさつ: MySQL を jupter notebook で動かしたい
pythonで機械学習を勉強する際にデータベースの勉強が必要になりまして、sqlをjupyter notebook上で動かす必要が出てきました。 そこでjupyter notebookのkernelをいじっていたのですが、少し躓いてしまったので備忘録程度にjupyterへのMySQLの入れ方をまとめておきます。 なお、実行環境はubuntu16.04です。
注意 この記事はMySQLをjupyter notebookのkernelに入れることを目的としていますが、pythonでデータベースを扱う際にはMySQL-pythonをinstallして、 pythonのカーネルでMySQLdbをimport したほうが実用的です。MySQL-pythonについては下記のサイトを参考にしてください。
MySQLを操作する | Make. MySQL Python tutorial – programming MySQL in Python
前準備: mysql-serverをインストール
そもそもmysqlサーバーのユーザー設定が無いと意味がないので、ターミナルで
を実行。当然、元から入っている人はスルーです。 また、この際にpasswordの設定画面が出るので、設定しましょう。 詳しくは下記の記事を参考に。 Ubuntu で MySQL – Qiita
実践: MySQLをjupyter notebookのkernelに入れる
github.com ここから実際にインストールしていきます。 いろいろ悩みまして、ipython用のパッケージでもjupyterとの互換性があるということなので上記のパッケージを使いました。 基本は上記の”README”を参考にしましたが、適宜”ipython”の部分を”jupyter”に読み替えていきます。 基本やることは、
- ipython_mysql_kernelのインストール
- Configのjsonファイルを作成
- kernelのjsonファイルを作成、jupyterのkernelにファイルを追加
この3フェーズに別れます。
ipython_mysql_kernelのインストール
ターミナルで
を実行します。
Configのjsonファイルを作成
ここで少し躓きました。というのも、ここを飛ばしてしまってもjupyter notebookでmysqlが選択できるようにはなるのですが、mysqlサーバーへのログインがうまく行かないためdead kernelと表示されてしまったからです。
画像1: ログインできず、死んだことにされるkernel。ターミナルの方のログを見るとログインでうまく行っていないことが確認できる。 ということで、先ほど作ったユーザー設定をまとめたConfigファイルを作ります。 ホームディレクトリに .ipython というフォルダがあるので、そのフォルダに mysql_config.json というファイルを作り、内容を
mysql_config.json とします。 これでjupyterによるログイン時にこのユーザー設定が優先されるようになります。
kernelのjsonファイルを作成、jupyterのkernelにファイルを追加
今度は現在のディレクトリ(どこでも良い)に mysql というフォルダを作成し、そのフォルダに kernel.json を作り、内容を
kernel.json とします。そうしたらターミナルからフォルダmysqlがあるディレクトリで sudo jupyter kernelspec install mysql を実行します。 usr/local/share/jupyter/kernels にmysqlがあればkernelの追加は完了です。
jupyter notebookのkrenelが動くか確認
jupyter notebookのkernelにMySQLが入っているかを確認する。 うまく行っていれば上記のようにmysqlを選択できるので、適当にいじってみましょう。 以上になります。 今回の躓きはjupyterに執着しすぎていてipythonの互換性を見落としていたことを起因としたものでした。そのうちjupyterのSQLkernelを作ったほうが良いのだろうか・・・。