MemSQLを使ってみようVol.14: 実践編7

#Windows環境向けの追加検証を行います。
前回、Mac環境でのJupyter NotebookとMemSQLの連携検証を行いましたが、今回は環境を少し変えてWindows環境とリモートのMemSQLを使った追検証を実施してみたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/42df32e3-d112-1f7b-d276-86edbc4c939c.png)

##今回はAnaconda環境としてJupyter Notebookを導入してみる・・
前回は、色々とステップを踏んで環境を構築しましたが、今回の検証ではシンプルにAnacondaの最新版を使って、関連環境を整える事にします。

まずは、[**Anacondaのホームページ**](https://www.anaconda.com/)へ行って、必要なモジュールをダウンロードしてきます。

![a1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/2a161b45-214d-e757-2761-d4855df3c938.jpeg)
ダウンロードのページへ移動して
![a2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/bf29ee84-e7f7-5400-77b5-3e0ad3f5b706.jpeg)
執筆時点では、Python3.7のバージョンが公開されていましたので、Windows10の64ビット版に合わせてAnacondaの64ビット版をダウンロードします。

##では！インストールします！！
ダウンロードしてきたインストーラーを起動します。
![a3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/a0648193-808d-594f-a2e8-fd954cc12b12.jpeg)
**Next>**を選択します。
![a4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/23e7c370-eaa2-2470-aae1-bbacadcebef4.jpeg)
今回は、本人利用だけの形を選択しました。
![a5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/d24646d4-d396-1058-a8d2-88c00903cdfd.jpeg)
デフォルトのインストールディレクトリで問題ないかと。（これは後のパス通しに関係してきます）
![a6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/5eeefe43-f5e2-ff74-9789-bca4d8d15f62.jpeg)
今回のポイントがこの画面になります。赤字で推奨しない！と出てきますが、これをしないで続行した場合は、手動で環境変数のPATH等を設定する必要が出てくると思いますので、今回は勇気を振り絞って（苦笑）この項目にチェックを入れてインストールしました（人柱・・・・かな？！）
![a14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/f00143b8-aa61-715c-e52f-e3e05f5617df.jpeg)
基本的に、粛々とインストールのプロセスが進んで行きますので、心穏やかにお待ちください。
![a15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/ba9bfa1e-ca58-9f9b-00c7-e61d25eb45eb.jpeg)
此処まで来ればあと一息です。
![a10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/fc8ce863-216f-1922-3f41-a81c27e6f8f9.jpeg)
無事にインストールが終了しました。
![a11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/ff85aae5-1561-1062-bbb9-747de5c77b99.jpeg)

##さて、動作確認・・・
まずは、テキストエディタを使ってPythonを書いてみます・・

~~~python
print("test")
~~~

test.txtではなく、test.pyとして保存します。
![a12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/8301e618-d5da-f5e4-1bd6-9a71e0690f33.jpeg)

インストールされた環境を呼び出してきます。
![a16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/71be0423-c02c-c16e-278d-5a54759bc5f3.jpeg)


Anaconda Promptを選択して、先ほどのファイルでを流し込んでみます。

~~~shell
> python
~~~

と入力してスペースを1個入れた後、先ほどのファイルをドラッグアンドドロップします。
![a18.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/602208ea-0ab3-51f6-c5ff-1a29fc6cc1cf.jpeg)
無事に動き始めました！！

#いよいよJupyter Notebookとの遭遇・・
先程と同様に、Anaconda Promptを立ち上げて、

~~~shell
> jupyter notebook
~~~

と入力します。
無事にWindows10環境上にJupyter Notebookが立ち上がってきました！
![a20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/8175f84e-6d14-5d01-3b1a-e9492ef24f84.jpeg)

#念のために・・MemSQLとの連携を確認します
ここまでくれば、基本的にJupyter NotebookのPythonワールドになりますので、前回と同じ手順でMemSQLへの読み書き連携検証を行ってみたいと思います。

##お約束のモジュールを導入
まずは、前回同様に**pymysql**を導入します。

~~~shell
> pip install pymysql
~~~

サクッと入りました。
![a21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/c7441400-93c9-164c-a428-7b23dd8f68fc.jpeg)

では、具体的な連携作業に入ります。

##まずは読み出し・・

~~~python
import pymysql

db = pymysql.connect(host='xxx.xxx.xxx.xxx', #ネット上のMemSQLに付与されているIPアドレス
                     user='root',
                     password='',
                     db='r_db',
                     charset='utf8',
                     cursorclass=pymysql.cursors.DictCursor)

db.commit()

with db:
    cur=db.cursor()
    cur.execute("SELECT * FROM r_table03")
    rows=cur.fetchall()
    for row in rows:
        print (row)
~~~

今回は、前回の検証で作成したデータベースとテーブルを、そのまま読み出しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/0e8a70fa-030c-a908-8cc1-4b76b02112f2.png)
無事に読み出せました！

##次にデータベースの書き込み・・


~~~python
import pymysql

db = pymysql.connect(host=  'xxx.xxx.xxx.xxx', #ネット上のMemSQLに付与されているIPアドレス
                             user='root',
                             password='',
                             db='r_db',
                             charset='utf8',
                             cursorclass=pymysql.cursors.DictCursor)

db.commit()

with db:
   cur=db.cursor()
   cur.execute("CREATE TABLE IF NOT EXISTS pw_test(test_id INT AUTO_INCREMENT PRIMARY KEY, data VARCHAR(25))")
   cur.execute("INSERT INTO pw_test(data) VALUES('aaaaaaa')")
   cur.execute("INSERT INTO pw_test(data) VALUES('bbbbbbb')")
   cur.execute("INSERT INTO pw_test(data) VALUES('ccccccc')")
~~~

無事に書き込めたか確認してみます。

~~~python
with db:
   cur=db.cursor()
   cur.execute("SELECT * FROM pw_test")
   rows=cur.fetchall()
   for row in rows:
        print (row)
~~~

うまくデータベースに収まってくれました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/cccf5ce3-1ea9-770d-3ad5-e726b0e64dd7.png)

…という事で、取り急ぎの駆け足検証＠Windowsは終了です。

#今回のまとめ
今回は、前回に引き続きJupyter NotebookとMemSQLの連携検証をWindows10＋リモートのMemSQL環境で行ってみました。こちらの仕組みも、必要な環境が動き始めれば、素直に**pymysql**経由でMySQLのフリをしながらMySQLを操作出来る様になりますので、ぜひWindows派の皆様もMemSQLをお試し頂ければと思います。

また次回以降の予定としては、以前の回でご紹介させて頂いた、MemSQLのファイルシステムパイプラインを使って、データの定期取り込みをしながらMemSQL上に基礎データの蓄積を行い、そのデータをRやJupyter Notebookで操作しながら結果を再度MemSQLに書き込んで、最終的にZoomdataで可視化する・・というシナリオに挑戦してみたいと思います。


#謝辞
本解説に転載させて頂いているスクリーンショットは、一部を除いて現在MemSQL社が公開されている公式ホームページの画像を使わせて頂いており、本内容とMemSQL社の公式ホームページで公開されている内容が異なる場合は、MemSQL社の情報が優先する事をご了解ください。