CSVファイルのデータをアップロードする方法

使用するモデルとCSVファイル

例として、以下のモデルを使用します。

class ExModel(db.Model):
   data1 = db.StringProperty()
   data2 = db.StringProperty()
   data3 = db.StringProperty()

アップロードするCSVファイルは data.csv とし、内容は以下とします。CSVファイルにはヘッダを必ず含みます。

data1,data2,data3 ←ヘッダ
aaa,aaa,aaa
bbb,bbb,bbb
ccc,ccc,ccc
remote_apiの設定

app.yaml に以下を追記します。

- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
  login: admin

アプリケーションを更新します。

$ appcfg.py update 

http://.appspot.com/remote_api にアクセスすると、アカウントの認証を求められます。メールアドレスとパスワードを入力してログインすると以下のメッセージが表示されます。

This request did not contain a necessary header

※ 最初に「builtins ディレクティブを使用した remote_apiのインストール」を行おうとしたが、上手くいきませんでした。認証の関係のエラーが出力されていました。

Bulk Loader の設定

設定ファイル bulkloader.yaml を自動作成します。

$ appcfg.py create_bulkloader_config --filename=bulkloader.yaml

作成された bulkloader.yaml を編集します。

…
transformers:
- kind: ExModel
  connector: csv
  property_map:
    - property: __key__
      external_name: key
      export_transform: transform.key_id_or_name_as_string

    - property: data1
      external_name: data1

    - property: data2
      external_name: data2

    - property: data3
      external_name: data3
データをインポートする
$ appcfg.py upload_data --config_file=bulkloader.yaml --filename=data.csv --kind=ExModel 


こちらの URL を参考にさせていただきました。