前提知識が無くて手間取ってしまった。
やりたいこと
.pyファイルをConoHaサーバー上に起き、その.pyファイルをSSH接続経由で実行したい。
.pyファイル内はSQLAlchemyを用いたMySQLへの接続処理。
SSH接続
ConoHa上の.pyファイルをローカルから実行するためSSH接続を行う。
下記ページの説明どおりにやればできる。分かりやすかった。
[ConoHa WING] SSH 接続する方法
SQLAlchemy
SSH接続ができたら好きな場所にディレクトリ作成。
mkdir hoge
自分の場合はそのディレクトリ内でvenvの仮想環境を作った。
python3 -m venv hoge
仮想環境に入る。
source bin/activate
SQLAlchemyとmysqlclientをインストール。
pip install SQLAlchemy mysqlclient
さて、ここから.pyファイルの中身。
ちなみに環境変数から必要な変数を読み込んでいるが、環境変数はルートディレクトリ内の.bashrcという名前のファイル内にexport DB_USER=”fuga”というふうに書いていけばOK。
エンコードに関してはこちらを参考にさせていただいた。
from sqlalchemy import create_engine,inspect
import os
import io
import sys
#エンコーディング方式指定
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
#環境変数読み込み
user=os.environ["DB_USER"]
password=os.environ["DB_PASS"]
dbname=os.environ["DB_NAME"]
host=os.environ["HOST"]
engine = create_engine(f'mysql://{user}:{password}@{host}/{dbname}?charset=utf8',echo=True)
#テーブルのカラムを見てみてる
print(inspect(engine).get_columns("table"))
userとpasswordは、ConoHaサイドバーの「サイト管理」→「データーベース」→「ユーザー」で追加したユーザーのもの。
まだユーザーを追加していなかったら右側にある「+ユーザー」を押して追加する。
dbnameとhostは下記画像の赤で塗った部分。
hostはlocalhostでは無い(これで数時間溶けた)。
また、「当たり前だろ」と言われるかもしれないが、create_engine内のhostの直前に@が使われているため、ユーザー名やパスワードに@を使ったらダメ(これで数時間溶けた)。
最後に、試しにinspectで任意のテーブルのカラムを確認する。
ここまでできたらあとはSQLAlchemyのクエリでしたいことを好きにするターン。
コメント