開発サーバにデータをリストア(復元)する
- Web サーバのデータをローカル開発サーバで利用したい場合の対処
ここの説明は、基本的に Loader クラスを自前で用意しなくて済む方法です。
まず、remote_api へアクセスできるように app.yaml の handlers に以下を追加しておきます。
# # app.yaml # handlers: # (中略) - url: /remote_api script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py login: admin # (中略)
App Engine の Web サーバからデータのバックアップを取得します。 /backup ディレクトリ等を適当に作って、そこで appcfg.py をコマンドラインで以下のように実行します(実行ディレクトリにログファイルがたくさん作成されます)。
appcfg.py download_data \ --application=<app-id> \ --url=http://<appname>.appspot.com/[remote_api_path] \ --filename=<data-filename>
具体例として,Test Web Frames では、以下のようになります。
appcfg.py download_data \ --application=testwebframes \ --url=http://testwebframes.appspot.com/remote_api \ --filename=backup
(ここでは、正式なメールアドレスとパスワードの入力を要求されます)
backup ファイルは SQLite3 形式です。
ここで得られた backup を開発サーバにリストアするには、bulkloader.py をコマンドラインで以下のように実行します。
bulkloader.py --restore \ --application=testwebframes \ --url=http://localhost:8087/remote_api \ --filename=backup
(ここで要求されるメールアドレスとパスワードは適当でいいです)
開発サーバにデータが復元されたはずです。 これでいつでもデータストアを空にできます。
注)データ量が多ければ多いほど、プロジェクトの起動時に時間がかかります。
一方、開発サーバには以下のような制限があるため、開発サーバでデータを追加して Web サーバに再反映させるといったことは難しいようです。 開発サーバにおけるバックアップ取得は簡単ではないようです。
注意: 全ての kind に属する全てのエンティティのダウンロードは、App Engine 上でのみ動作します。開発用サーバーでは動作しません。