SQLAlchemyでSSHトンネル経由でMySQLへアクセスする方法

この記事は公開から2年以上経過しています。

Python(3.9) + SQLAlchemy(1.4) + SSHTunnel(0.4.0) + PyMySQL(1.0.2)を使い、SSHトンネル経由でさくらのレンタルサーバー(スタンダード)のMySQLサーバーへアクセスしたい用事があったので、その方法についての備忘録。

さくらのレンタルサーバー(スタンダード)のサーバーIPアドレスやデータベースサーバー情報の取得方法について知りたい方は、過去のエントリー「さくらのレンタルサーバにMySQL Workbenchで接続する方法」をご参照ください。


サンプルソースコード

import sqlalchemy as sqlalc
import sshtunnel as sshtun

# SSHトンネル接続情報の設定
ssh_forwarder = sshtun.SSHTunnelForwarder(
    ssh_address_or_host='サーバーのホスト名 または IP',
    ssh_username='サーバーのユーザー名',
    ssh_password='サーバーのパスワード',
    remote_bind_address=('DBサーバーのホスト名 または IP', 3306)
)

# SSHトンネルを開始
ssh_forwarder.start()

engine = sqlalc.create_engine(
    f'mysql+pymysql://DBのユーザー名:DBのパスワード@localhost:{ssh_forwarder.local_bind_port}'
)

# MySQLサーバーからデータを取得
with engine.connect() as conn:
    rows = conn.execute(
        'データ取得SQL')
    for row in rows:
        print(row)

# SSHトンネルを停止
ssh_forwarder.close()


参考ウェブサイトなど

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする