LoginSignup
1
1

More than 5 years have passed since last update.

Railsの開発用DB(SQLIite3)をjupyter-notebookで触れるようにする

Posted at

ゴール

sqlite_test.png
目標は上のようなノートが作れるようになることです。上のファイルはnote/test.ipynbに置いていて

docker run -d -p 8888:8888  -v `pwd`:/home/jovyan/work  nnabeyang/jupyter-notebook start-notebook.sh --NotebookApp.token=''

でサーバーを起動したときに、db/development.sqlite3を参照してくれます。

.
├── Gemfile
├── app
├── bin
├── config.ru
├── db
│   ├── development.sqlite3
│   ├── migrate
│   ├── seeds.rb
│   ├── structure.sql
│   └── test.sqlite3
├── note
│   └── test.ipynb
│
...

環境構築

まずdockerを使って、公開されているjupyter-notebookのイメージを取ります。
railsアプリのルート位置にいるとして、次のコマンドを実行すると、イメージを取り、サーバーを起動するところまでしてくれます。

$ docker run -d -p 8888:8888  -v ~/rails_tutorial/money_log:/home/jovyan/work  jupyter/datascience-notebook start-notebook.sh --NotebookApp.token=''

ここの作業は時間がかかりますが、終わったらhttp://localhost:8888にアクセスします。このままでは'%%sql'を書いてもSQLを実行することができませんので、ipython-sqlをインストールします。jupyter-notebookのページにある新規作成用のボタンを押すと、以下のようにTerminalが表示されるので、そこをクリックします。
terminal.png
すると、ターミナルが開くので、pip3 install ipython-sqlを実行します。
pip3.png
インストールし終えたらこれで、note/test.ipynbはSQL文を実行できるようになっているはずです。

あとは、このdockerイメージを今後も使えるようにしておけば目標達成です。まず今起動しているdockerのコンテナIDをdocker psして調べます(ここではコンテナIDがafc4c5294130だったとしましょう)。それを次のようにして後で参照しやすいようにしておきます。

$ docker commit afc4c5294130 nnabeyang/jupyter-notebook:170530
$ docker tag nnabeyang/jupyter-notebook:170530 nnabeyang/jupyter-notebook:latest

(当然ですがnnabeyang/jupyter-notebookなどは適当に使いやすいように変更してください。)

今起動しているコンテナをdocker stop afc4c5294130で止めてから、次のようにするとSQLが使えるjupyter-notebookが起動します。

docker run -d -p 8888:8888  -v `pwd`:/home/jovyan/work  nnabeyang/jupyter-notebook start-notebook.sh --NotebookApp.token=''
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1