受験・進路の相談を承ります(クリックorタップ)

Python+SQLAlchemyでConoHa Wing上のMySQLに接続

趣味・Tips

前提知識が無くて手間取ってしまった。

やりたいこと

.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のクエリでしたいことを好きにするターン。

 

≪新登場≫国内最速・高性能レンタルサーバー【ConoHa WING】

コメント

タイトルとURLをコピーしました