Как загрузить данные с именем_ключа с помощью загрузчика Google App Engine - PullRequest
3 голосов
/ 08 июня 2011

Я могу загрузить данные, но имя ключа пусто. Как я могу использовать 'id' в CSV в качестве имени ключа в хранилище данных?

Я бы хотел использовать «id» в качестве имени ключа, потому что другие данные используют «id» в качестве внешнего ключа. Я новичок в Google App Engine.

Это данные CSV.

"id","name"
"1","USA"
"2","France"
"3","Italy"

Это YAML

- model: model.testcountry.TestCountry
  connector: csv
  connector_options:
    encoding: utf-8
    columns: from_header
  property_map:
    - property: __key__
      external_name: id
    - property: name
      external_name: name

P.S .: Я пытаюсь загрузить данные в локальную среду.


Обновление

Спасибо за помощь, я пробовал код, но он не работает. Результат странный.

В окне терминала сообщается, что загрузка успешно завершена, однако я не могу найти никаких записей в консоли Google App Engine (http://localhost:8080/_ah/admin/datastore). Хранилище данных пусто, записи нет.

Сообщение журнала в окне терминала:

Ввод команды

appcfg.py upload_data --config_file=bulkloader.yaml --filename=testcountries.csv --kind=TestCountry --url=http://localhost:8080/remote_api --num_thread=1 

Сообщение о результате

Uploading data records.
[INFO    ] Logging to bulkloader/log.log
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
Please enter login credentials for localhost:8080
Email: xxxxxxx
Password for l: 
[INFO    ] Opening database: bulkloader-progress-20110609.003032.sql3
[INFO    ] Connecting to localhost:8080/remote_api
[INFO    ] Starting import; maximum 10 entities per post
..........
[INFO    ] 100 entities total, 0 previously transferred
[INFO    ] 100 entities (3362 bytes) transferred in 1.9 seconds
[INFO    ] All entities successfully transferred

Я тоже это пробовал, но результат был тот же. Терминал сообщает об успехе, но в консоли Google App Engine нет записей ....

import_transform: int

PS: я использую Mac OS X Snow Leopard и Google App Engine.

1 Ответ

1 голос
/ 08 июня 2011

Попробуйте это:

- import: google.appengine.ext.bulkload.transform
- model: model.testcountry.TestCountry
  connector: csv
  connector_options:
    encoding: utf-8
    columns: from_header
    property_map:
    - property: __key__
      external_name: id
      import_transform: transform.create_foreign_key('TestCountry')
    - property: name
      external_name: name
...