ちょっと前に話題になった東大松尾研データサイエンティスト育成講座の Jupyter 教材を眺めていると、8 章と 9 章で SQL をカーネルにしています。Jupyter で SQL を直接扱うというのは面白いのでやってました。一応困らない程度に設定出来たみたいなので記録を残します。ただ出力が全部アスキー文字列で、実際に授業使われているような TABLE 形式にする方法は分かりませんでした。

もしも正しいやり方を知っている方がいましたら教えて下さい。。。

前提条件

Jupyter + Python3 のインストールは終わって使える所から始めます。

インストール

MySQLをjupyter notebookのkernelに入れる方法 のとおり ipython_mysql_kernel を使います。ググると https://github.com/shemic/jupyter-mysql-kernel というのが出てくるが、これは複数行の SQL がエラーになるので使えません。

pip install git+https://github.com/shemic/jupyter-mysql-kernel
mkdir -p ~/.ipython/
~/.ipython/mysql_config.json

{
    "user"     : "root",
    "port"     : "3306",
    "host"     : "127.0.0.1",
    "charset"  : "latin-1",
    "password" : "my-secret-pw"
}

ここで charset を latin-1 にするのがコツです。教材で使われているサンプルデータ http://downloads.mysql.com/docs/world.sql.gz の文字コードが latin-1 なので utf8 では動きません。

この教材では mariadb というのを使っているらしいので、そちらも起動します。後腐れのないように docker で起動。

docker run --name some-mariadb -p 3306:3306 --rm -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb
mysql -h 127.0.0.1 -P 3306 -u root -pmy-secret-pw -e 'show databases'

もし間違って jupyter-mysql-kernel をインストールしてしまったら以下で削除。

rm -r /usr/local/share/jupyter/kernels/jupyter-mysql-kernel 

参考

    【スマホOK/実行しながら学ぶ】東大松尾研のデータサイエンティスト育成/ Deep Learning基礎講座を自習する

BUGS

    このやり方で 9 章を試すとストアドファンクションがうまく入力出来ません。コンソールの mysql コマンドを使いましょう。