LoginSignup
0
3

More than 5 years have passed since last update.

anacondaでRDSへポートフォワードしながらデータを取得してみる。

Last updated at Posted at 2017-02-01

はじめに

データ分析をする際にデータがそもそもそのデータがデータベースの中にあるという事があると思います。
その場合にローカルにあればいいのですがAWSのRDSにある場合などはリモートに接続してデータを取得する必要があります。この場合、1つの方法としてローカルとリモートでポートフォワーディングして取得する方法があります。今回はanacondaを使ってこれを実行して見たいと思います。

準備

下記のものをcondaもしくはpipでインストールしておきます。

※ポートフォワーディングするのに使います。
sshtunnel
※mysqlへの接続に使います。
mysql.connector
pandas

ポートフォワーディングして

sshtunnelをインポートしてポートフォワードします。

※必要な物をインポートします
from sshtunnel import SSHTunnelForwarder
※ポートフォワーディングの設定
host = 'リモートホスト'
localhost = '127.0.0.1'
ssh_username = 'ユーザー名'
ssh_private_key = '秘密鍵の場所'
server = SSHTunnelForwarder(
          (host, 22),
          ssh_private_key_password="秘密鍵のパスワード",
          ssh_username=ssh_username,
          ssh_private_key=ssh_private_key,
          local_bind_address=('0.0.0.0', バインドするローカルポート),
          remote_bind_address=(localhost, バインドするリモートポート))

server.start()
※ポートフォワードを終わらせる時はstopをします。
server.stop()

ポートフォワーディングしてデータベースからデータを取得する

上記のソースでポートフォワーディングできている状態で、
データベースに接続しデータを取得、データフレームでデータを表示しています。

import mysql.connector
import pandas as pd

#データベース接続情報
connect = mysql.connector.connect(user='DBユーザー名', password='DBパスワード', host='127.0.0.1',port='ポートフォワーディング先', database='DB名', charset='utf8')
cursor = connect.cursor()

cursor.execute("select * from table WHERE id = 1")
result = cursor.fetchall()
dataframe = pd.DataFrame(result)
dataframe

終わりに

anacondaで直接データを取得できるようになったの簡単にデータを取得することができるようになりました。

0
3
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
0
3