Xserver上でFlask(PythonのWebフレームワーク)を利用する方法を記事にしました。
今回は、FlaskからXserverのMySQLに接続する方法を説明します。(OSはUbuntu16.04)
下記サイトを参考にしています。
qiita.com
Python2系をインストールする
PythonからMySQLに接続するには、"mysql-python"というモジュールを使います。
が、このモジュールはPython3.xには対応していない模様。
というわけで、Python2.x系を利用する必要があります。
Pythonはこんな感じで使いたいモジュールによってバージョンを変える必要が(たまに)出てくるようなので、pyenvでバージョン管理できるようにしておきましょう。
Xserverにpyenvとpythonをインストールする手順は、下の記事の 2「pyenvをインストール」と3「pythonをインストール」を参考にしてください。
XserverでFlask(Pythonフレームワーク)を利用する方法 - シュンカの日記
上の記事では、python3.4.2をインストールしていますが、今回は2.7.xxをインストールしましょう。とりあえず、2.7.11とします。
sshでXserverに接続して、下記コードを実行します。
pyenv install 2.7.11
ぼくのようにpyenv環境下に複数バージョンのPythonを導入した場合は、下記コードを実行してpythonのバージョンを2.7.11に変更します。
pyenv local 2.7.11
これで、mysql-pythonを使える環境(python2.x系)になりました。
mysql-pythonをインストール
pipでmysql-pythonをインストールします。
pip install mysql-python
念のため、端末画面でpythonを起動して、"MySQLdb"がインポートできるか試してみましょう。
FlaskでMySQLに接続
FlaskでMySQLに接続して、テーブルにレコードを追加してみます。
事前にテーブルを作成
ここでは、Xserverのサーバーパネルから、テスト用のデータベースとテーブルを作成しておきます。
以下のようにしてみました。
- データベース:test
- テーブル:human
- カラム:"id", "name", "birthday"
サンプルコード
冒頭の参考サイトを参考に、サンプルコードを作成しました。
index.cgi
#!/home/ユーザID/.pyenv/versions/2.7.11/bin/python
from wsgiref.handlers import CGIHandler
from testFlask import app
CGIHandler().run(app)
※1行目にPythonの在り処を書いています。2.7.11にするのを忘れないようにしましょう。
testFlask.py
# -*- coding: utf-8 -*- from flask import Flask import MySQLdb app = Flask(__name__) @app.route('/db') def db_save(): connector = MySQLdb.connect(host="DBサーバー名", db="DB名", user="DBユーザー名", passwd="パスワード", charset="utf8") cursor = connector.cursor() sql = u"insert into human values('1','shunka', '2000/04/01')" cursor.execute(sql) connector.commit() cursor.close() connector.close() return "レコード挿入完了"
※赤字箇所に、データベース接続情報(DBサーバー名、DB名、DBユーザー名、パスワード)を設定しましょう。
.htaccess
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /flask/hello/index.cgi/$1 [QSA,L]
以上、3ファイルを例えば、「public_html/flask/hello」配下に配置して、
「http://www/flask/hello/db」にアクセスします。
下記のように表示されれば、データベースのテーブルにレコードが挿入されているはずです。
まとめ
以上でした。