アドベントカレンダーのネタでGoogle CloudSQLを扱いましたが、ローカルにMySQLの環境がなかったことから、新たに構築する必要がありました。
Googleの公式ドキュメントでは、Windowsでの環境構築が記載されておらず少し悩んだため、メモを残します。
MySQLのインストール
一番容易に導入できる方法を選び、msiファイルをダウンロードしました (mysql-5.5.28-win32.msi)。
MySQL :: Download MySQL Community Server
32bit/64bitどちらでも動くだろうと深くは考えず、32bitを選択しました。
なお、現時点の5.5.29で同じようなmsiファイルは無いため、アーカイブからダウンロードします。
設定内容は以下を参考にして行いました。文字コードは「utf-8」です。
http://awoni.net/personal-site/mysql/
MySQLのテーブルを作成
「MySQL 5.5 Command Line Client」を使いました。
mysql> create database arukuma Query OK, 1 row affected (0.03 sec)
mysql> use arukuma Database changed
mysql> create table schedule (title VARCHAR(255), place VARCHAR(255), day DATE, lat DOUBLE, lng DOUBLE, entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID)); Query OK, 0 rows affected (0.05 sec)
MySQL-Pythonのインストール
以下のページよりダウンロードします(sourceforgeにもあるようですが、Python 64bit版があるのはこちらだけ)。
MySQL-python 1.2.3 for Windows and Python 2.7, 32bit and 64bit versions | codegood
なお、インストールするものはPythonのbitに合わせます。最初32bit版を入れたため動作せず、しばらく悩みました。
参考:[Python] OSX 10.6でMySQLdbのインストールに手間取った話 | taichino.com
GoogleAppEngine開発サーバーに起動パラメータを追加
以下の内容の起動パラメータを追加します。なお、今回は簡単に作ったため、ユーザーはrootを使用しています。
--mysql_user=root --mysql_password=<your password>
参考:Using Google Cloud SQL with the App Engine Python SDK - Google App Engine — Google Developers
コーディング上の注意
ローカルでMySQL + MySQL-Python を使う場合、文字コードを与えないとエラーで動作しませんでした。
逆に、本番環境では文字コードを与えると動作しなかったため、注意が必要です。
cn = rdbms.connect(instance=keys['instance'], database='arukuma') # 文字コードを指定してあげないと、開発環境では文字化けする # 開発環境のみ必要な設定(本番環境はutf-8化されているのか、大丈夫っぽい) debug = os.environ.get('SERVER_SOFTWARE', '').startswith('Dev') if debug: cn.set_character_set('utf8')
参考:Python, MySQLdb and UTF-8 - DASPRiD's v9.4
以上でGoogle CloudSQL向けの開発環境が構築できました。
参考:CloudSQLの準備
参考までに、CloudSQLのSQL Promptの内容を記載します。
まずはデータベースを作ります。
CREATE DATABASE arukuma;
次にテーブルを作って完了です。
CREATE TABLE schedule (title VARCHAR(255), place VARCHAR(255), day DATE, entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID));
参考:CloudSQLの価格
以下の公式ドキュメントを参照。
Pricing - Google Cloud SQL — Google Developers