MySQLをjupyter notebookのkernelに入れる方法

f:id:matsume_goods:20170808213817p:plain

方法だけ知りたければ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サーバーのユーザー設定が無いと意味がないので、ターミナルで

sudo apt-get install mysql-server 

を実行。当然、元から入っている人はスルーです。 また、この際にpasswordの設定画面が出るので、設定しましょう。 詳しくは下記の記事を参考に。 Ubuntu で MySQL – Qiita

実践: MySQLをjupyter notebookのkernelに入れる

github.com ここから実際にインストールしていきます。 いろいろ悩みまして、ipython用のパッケージでもjupyterとの互換性があるということなので上記のパッケージを使いました。 基本は上記の”README”を参考にしましたが、適宜”ipython”の部分を”jupyter”に読み替えていきます。 基本やることは、

  1. ipython_mysql_kernelのインストール
  2. Configのjsonファイルを作成
  3. kernelのjsonファイルを作成、jupyterのkernelにファイルを追加

この3フェーズに別れます。

ipython_mysql_kernelのインストール

ターミナルで

sudo pip install git+https://github.com/mmisono/ipython_mysql_kernel

 を実行します。

Configのjsonファイルを作成

ここで少し躓きました。というのも、ここを飛ばしてしまってもjupyter notebookでmysqlが選択できるようにはなるのですが、mysqlサーバーへのログインがうまく行かないためdead kernelと表示されてしまったからです。

f:id:matsume_goods:20170808213240p:plain 画像1: ログインできず、死んだことにされるkernel。ターミナルの方のログを見るとログインでうまく行っていないことが確認できる。 ということで、先ほど作ったユーザー設定をまとめたConfigファイルを作ります。 ホームディレクトリに .ipython というフォルダがあるので、そのフォルダに mysql_config.json というファイルを作り、内容を

{
"user"     : "root",
"port"     : "3306",
"host"     : "127.0.0.1",
"charset"  : "utf8",
"password" : "(設定したpassword)"
}

mysql_config.json とします。 これでjupyterによるログイン時にこのユーザー設定が優先されるようになります。

kernelのjsonファイルを作成、jupyterのkernelにファイルを追加

今度は現在のディレクトリ(どこでも良い)に mysql というフォルダを作成し、そのフォルダに kernel.json を作り、内容を

{
"argv": [
"python",
"-m",
"ipython_mysql_kernel",
"-f",
"{connection_file}"
],
"display_name": "mysql",
"language": "mysql"
}

kernel.json とします。そうしたらターミナルからフォルダmysqlがあるディレクトリで sudo jupyter kernelspec install mysql を実行します。 usr/local/share/jupyter/kernels にmysqlがあればkernelの追加は完了です。

jupyter notebookのkrenelが動くか確認

f:id:matsume_goods:20170808213315p:plain

jupyter notebookのkernelにMySQLが入っているかを確認する。 うまく行っていれば上記のようにmysqlを選択できるので、適当にいじってみましょう。 以上になります。 今回の躓きはjupyterに執着しすぎていてipythonの互換性を見落としていたことを起因としたものでした。そのうちjupyterのSQLkernelを作ったほうが良いのだろうか・・・。

プログラミング未経験からでもAIスキルが身につくAidemy Premium




PythonやAIプログラミングを学ぶなら、オンライン制スクールのAidemy Premiumがおすすめです。
「機械学習・ディープラーニングに興味がある」
「AIをどのように活用するのだろう?」
「文系の私でもプログラミング学習を続けられるだろうか?」
少しでも気になることがございましたら、ぜひお気軽にAidemy Premiumの【オンライン無料相談会】にご参加いただき、お悩みをお聞かせください!