前回はpythonで使えるMySQLライブラリを調べてみました。
結論から言うとmysql-connector-pythonとPyMySQLを使ってMySQLに接続してデータを取得することができました。
ライブラリのダウンロードと設置
アップロード後
動作確認用のテーブル
サンプルプログラム(mysql-connector-python)
mysqlconnector.py
#!/usr/bin/python3.6 import mysql.connector as mydb import sys, io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding = 'utf-8') connection = mydb.connect(host='aaa.bbb.ccc', port='3306', user='dbuser', password='dbpassword', database='db_sample', charset='utf8' ) cursor = connection.cursor() cursor.execute("select count(*) as cnt from sample1") cnt = 0 row = cursor.fetchone() if row is not None: cnt = row[0] cursor.close() connection.close print("Content-Type: text/html; charset=utf-8\n") print("<html><meta charset='utf-8'><body>") print("<h1>mysql-connector-pythonサンプル</h1>") print("件数" + str(cnt)) print("</body></html>")
サンプルプログラム(PyMySQL)
pymysql.py
#!/usr/bin/python3.6 import pymysql import pymysql.cursors import sys, io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding = 'utf-8') # コネクションの作成 connection = pymysql.connect(host='aaa.bbb.ccc', user='dbuser', port=3306, password='dbpassword', db='db_sample', charset='utf8', cursorclass=pymysql.cursors.DictCursor) cursor = connection.cursor() cursor.execute("select count(*) as cnt from sample1") cnt = 0 row = cursor.fetchone() if row is not None: cnt = row["cnt"] print("Content-Type: text/html; charset=utf-8\n") print("<html><meta charset='utf-8'><body>") print("<h1>PyMySQLサンプル</h1>") print("件数" + str(cnt)) print("</body></html>")
コネクション関連の設定はmysql-connector-pythonとほぼ同じ。
ポートの指定が数値型なのとcursorclassにpymysql.cursors.DictCursorを指定することにより結果を辞書型で返してくれます。
実行結果
件数がちゃんと出力されました。
これでスターサーバーでpythonとMySQLを使ってWebアプリを作る環境が整いました。