ちょっと前に話題になった東大松尾研データサイエンティスト育成講座の 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 コマンドを使いましょう。