この記事は公開から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()
参考ウェブサイトなど
- PyPI
sshtunnel
以上です。