Google App Engine で開発。第八弾。
GAE python27 です。
データの download(dump)/upload(restore) には bulkloader を使います。
app.yaml にて remote_api の使用を宣言します。
builtins: - remote_api: on
bulkloader.yaml ファイルを作成します。appcfg.py を使ってひな形を作成できます。
$ cd ANY_DIRECTORY $ appcfg.py create_bulkloader_config --filename=bulkloader.yaml --url=http://localhost:8080/_ah/remote_api --application=dev~your-application-id APPLICATION_ROOT
上記は開発サーバーにアクセスしていますが、本番サーバーにアクセスする場合には下記のようになります。
$ appcfg.py create_bulkloader_config --filename=bulkloader.yaml --url=http://your-application-id.appspot.com/_ah/remote_api --application=s~your-application-id APPLICATION_ROOT
APPLICATION_ROOT
は app.yaml ファイルが置いてあるディレクトリです。--application
の指定は High Replication application の場合には s~your-application-id
と指定するのだとか。
生成された bulkloader.yaml に設定を記述します。(追記2012.9.8 : class,nameの設定を見直しました。)
transformers: - kind: SeedKind connector: csv property_map: - property: __key__ external_name: id export_transform: transform.key_id_or_name_as_string import_transform: int - property: class external_name: class import_transform: eval - property: name external_name: name import_transform: unicode - property: link external_name: link import_transform: transform.none_if_empty(unicode) - property: note external_name: note import_transform: transform.none_if_empty(unicode)
SeedKind エンティティの定義は http://d.hatena.ne.jp/nosix/20120826/1345987673 を参照してください。PolyModel を使用しています。
download を行います。
$ appcfg.py download_data --config_file=bulkloader.yaml --url=http://your-application-id.appspot.com/_ah/remote_api --kind=SeedKind --filename=SeedKind.csv
下記は生成された SeedKind.csv。
note,link,class,id,name ,,"[u'SeedKind', u'Family']",1,イネ
upload を行います。
$ appcfg.py upload_data --config_file=bulkloader.yaml --url=http://sakudama.appspot.com/_ah/remote_api --kind=SeedKind --filename=SeedKind.csv
以上で、download/upload の確認ができました。
参考: