リモートのPostgresqlへの接続に興味のある人がいる場合 SSH経由でデータベースを作成し、データを pandas DataFrameにロードしたい これがその方法です。
次のパラメータでsshできるpostgresqlデータベースをリモートサーバーにインストールしたとします。
SSHパラメーター:
- サーバーのIP:
10.0.0.101
- SSHポート:
22
(SSHのデフォルトポート ) - ユーザー名:
my_username
- パスワード:
my_password
データベースパラメータ:
- ポート:
5432
(postgresqlのデフォルトポート ) - データベース名:
db
- データベースユーザー:
postgres_user
(デフォルトのユーザー名はpostgres
です ) - データベースパスワード:
postgres_pswd
(デフォルトのパスワードは空の文字列です ) - データを含むテーブル:
MY_TABLE
次に、このデータベースに接続して、データをpandasDataFrameにロードします。
from sshtunnel import SSHTunnelForwarder
from sqlalchemy import create_engine
import pandas as pd
server = SSHTunnelForwarder(
('10.0.0.101', 22),
ssh_username="my_username",
ssh_password="my_password",
remote_bind_address=('127.0.0.1', 5432)
)
server.start()
local_port = str(server.local_bind_port)
engine = create_engine('postgresql://{}:{}@{}:{}/{}'.format("postgres_user", "postgres_pswd", "127.0.0.1", local_port, "db"))
dataDF = pd.read_sql("SELECT * FROM \"{}\";".format("MY_TABLE"), engine)
server.stop()