2 votes

Importation de données GeoPt avec le BulkLoader YAML de Google AppEngine

Je télécharge des données à partir d'un fichier csv contenant une colonne GeoPt. Les données de la colonne GeoPt sont entre guillemets, comme ceci : SomeData,"54.321,-123.456",MoreData

Mon fichier bulkloader.yaml contient une entrée comme celle-ci : - propriété : emplacement nom_externe : LOCATION # Type : GeoPt Stats : 1 propriétés de ce type dans ce genre.

Lorsque j'effectue le téléchargement et que j'accède à la visionneuse DataStore, je constate que l'emplacement a été téléchargé sous la forme d'une chaîne au lieu d'un GeoPt. Je ne suis pas sûr de la manière correcte d'importer ceci. Peut-être faut-il une import_transform ?

4voto

Yogesh Points 19

Créer un uploadutil.py et ajoutez-y cette méthode :

def geo_converter(geo_str):
    if geo_str:
        lat, lng = geo_str.split(',')
        return db.GeoPt(lat=float(lat), lon=float(lng))
    return None

Ajoutez ensuite ceci bulkloader.yaml :

Ajout d'une importation pour uploadutil :

- import: uploadutil

Et ajoutez la propriété :

- property: location
      external_name: LOCATION
      import_transform: uploadutil.geo_converter

3voto

rainer Points 51

Si vous obtenez NameError global name 'db' is not defined pendant le téléchargement des données, ajoutez la ligne

 from google.appengine.ext import db

au fichier uploadutil.py

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X