ConoHa WINGにデータベースを追加して、Pythonから使うための手順メモ。
ConoHa WINGにはデフォルトでPython 3.6.8がインストールされていますが、pipコマンドでパッケージを追加しようとすると権限エラーが発生するため、pyenv + anacondaを使う方法を採用しました。
データベースを追加
データベースを作成する|ConoHa WINGサポート
ConoHa WINGのご利用ガイド、よくある質問などの各種サポート情報をご案内しています。ConoHa WINGは便利なご利用ガイドと専任スタッフのサポートで安心してご利用いただけます。
データベースユーザーを作成する|ConoHa WINGサポート
ConoHa WINGのご利用ガイド、よくある質問などの各種サポート情報をご案内しています。ConoHa WINGは便利なご利用ガイドと専任スタッフのサポートで安心してご利用いただけます。
テーブルを追加
phpMyAdminにログインする|ConoHa WINGサポート
ConoHa WINGのご利用ガイド、よくある質問などの各種サポート情報をご案内しています。ConoHa WINGは便利なご利用ガイドと専任スタッフのサポートで安心してご利用いただけます。
TESTテーブルを作成する。
データを追加しておく。
pyenvをインストール
- ConoHa WINGへSSHでログインする。
- pyenvをインストールする。(「/home/[ユーザ名]」で操作)
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
- .bash_profileにPATHを追記する。
# pyenv
PATH=$HOME/.pyenv/bin:$PATH
eval "$(pyenv init -)"
- .bash_profileの設定を反映する。
$ source .bash_profile
- バージョンを確認。
$ pyenv --version
pyenv 2.3.15-1-g4ef81b5
$ pyenv version
system (set by /home/[ユーザ名]/.pyenv/version)
$ python --version
Python 3.6.8
- Pythonをインストール・・・できなかった。
anacondaをインストール
- anacondaをインストールする。(ここでは「anaconda3-2022.10」をインストール)
# ~/tmpフォルダを作成
$ mkdir tmp
# anaconda3をインストール
$ TMPDIR="$HOME/tmp" pyenv install anaconda3-2022.10
- .bash_profileにPATHを追記する。
PATH=$HOME/.pyenv/versions/anaconda3-2022.10/bin:$PATH
- .bash_profileの設定を反映する。
$ source .bash_profile
- 確認
$ conda info
〜略〜
conda version : 22.9.0
〜略〜
$ python --version
Python 3.9.13
Pythonからデータベースへ接続
- pymysqlをインストールする。
$ pip install pymysql
Collecting pymysql
Using cached PyMySQL-1.0.2-py3-none-any.whl (43 kB)
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
- データベースからデータを取得するコードを書く。
import pymysql.cursors
# MariaDBの接続情報
conn = pymysql.connect(
host='[作成したデータベースの「接続先ホスト」]',
db='[データベース名(ネームタグではないので注意)]',
user='[ユーザ名]',
password='[パスワード]',
cursorclass=pymysql.cursors.DictCursor)
# SELECT
def select(sql, params=None):
cur = conn.cursor()
if params is not None:
cur.execute(sql, params)
else:
cur.execute(sql)
return cur
# データを取得して表示
result = select("SELECT * FROM TEST")
for rowData in result:
print(rowData)
- 実行
$ python db_access.py
{'ID': 1, 'INS_DATE': datetime.datetime(2023, 3, 21, 10, 6, 56), 'UP_DATE': datetime.datetime(2023, 3, 21, 10, 6, 56), 'NAME': 'ああああ'}
{'ID': 2, 'INS_DATE': datetime.datetime(2023, 3, 21, 10, 8, 48), 'UP_DATE': datetime.datetime(2023, 3, 21, 10, 8, 48), 'NAME': 'いいいい'}
{'ID': 3, 'INS_DATE': datetime.datetime(2023, 3, 21, 10, 9, 35), 'UP_DATE': datetime.datetime(2023, 3, 21, 10, 9, 35), 'NAME': 'うううう'}
コメント
Someone essentially help to make severely articles I would state.
This is the first time I frequented your web page and up to now?
I surprised with the analysis you made to make this particular submit extraordinary.
Excellent process!
I’ve been exploring for a bit for any high-quality articles or weblog posts
in this kind of area . Exploring in Yahoo I eventually stumbled upon this site.
Studying this information So i am happy to convey that I have an incredibly just right uncanny
feeling I discovered exactly what I needed. I most surely will make sure
to do not fail to remember this web site and provides it a
look regularly.
Very nice write-up. I definitely appreciate this site.
Keep it up!