Je veux utiliser le chargeur de masse appengine avec mon projet django-nonrel comme suggéré dans http://thomas.broxrost.com/category/google-app-engine/ et dans http://blog.suinova.com/2009/03/tutorial-on-bulkloading-data-onto-app.html. Mais il donne une erreur: Aucun module nommé google.appengine.ext.webapp. Je pense que c'est à cause de Django-nonrel, je ne suis pas en mesure d'accéder à google webapp.Corriger moi si je me trompe. En outre, il semble que mes champs de modèle sont aussi différents que supposés par google bulkloader. Faites-moi savoir si quelqu'un connaît une autre solution. Tous les documents en ligne ou des pointeurs sont les bienvenus :-)Appengine Bulkloader avec django-nonrel
Répondre
juste vu votre poste. Je suis capable d'utiliser le bulkloader appengine très bien avec mon projet django-nonrel.
Il y a deux choses à noter:
Sur les modèles je besoin chargés en bloc, j'ai les clés primaires définies manuellement en plaçant « primary_key = True » dans le domaine que je veux utiliser comme primaire clé. Cela permet à Django de créer le modèle avec un nom-clé de votre champ de clé primaire et vous pouvez être sûr que les modèles que vous créez auront des clés primaires connues. (au lieu de laisser les champs auto pk prendre le contrôle, puis le champ pk est le champ id aléatoire d'appengine)
Dans votre fichier bulkloader.yaml, référencez vos champs de propriété de clé étrangère avec 'field_id'. La façon dont django construit le schéma db est que les champs clés étrangers sont stockés avec le '_id' collé. Ne pas essayer d'utiliser le import_transform et export_transform pour transformer votre champ en un AppEngine champ « clé » ...
Voici un exemple de ce que je travaille actuellement que.
class Team(models.Model):
appengine_key = models.CharField(max_length=100, primary_key=True)
abbr = models.CharField(max_length=3)
name = models.CharField(max_length=10)
division = models.ForeignKey(Division, related_name="teams")
is_active = models.BooleanField(default=True)
created_time = models.DateTimeField(auto_now_add=True)
updated_time = models.DateTimeField(auto_now=True)
Ma déclaration bulkloader.yaml pour ce champ ressemble à ceci:
python_preamble:
- import: google.appengine.ext.bulkload.transform
- import: google.appengine.ext.db
- import: re
- import: base64
- import: datetime
transformers:
- kind: app_team
connector: csv
connector_options:
encoding: utf-8
columns: from_header
property_map:
- property: __key__
external_name: appengine_key
export_transform: transform.key_id_or_name_as_string
- property: abbr
external_name: abbr
- property: name
external_name: name
- property: division_id
external_name: division
- property: is_active
external_name: is_active
import_transform: transform.none_if_empty(bool)
- property: created_time
external_name: created_time
import_transform: transform.import_date_time('%m/%d/%Y %H:%M:%S')
export_transform: transform.export_date_time('%m/%d/%Y %H:%M:%S')
- property: updated_time
external_name: updated_time
import_transform: transform.import_date_time('%m/%d/%Y %H:%M:%S')
export_transform: transform.export_date_time('%m/%d/%Y %H:%M:%S')
Ensuite, votre fichier csv juste besoin d'avoir les en-têtes de champ que vous les mentionnés dans la déclaration « external_name », et les données correspondantes à charger en masse!
Vous pouvez vous assurer qu'il fonctionne sur votre environnement local en exécutant quelque chose de similaire à ce qui suit pendant que votre runserver locale est en cours d'exécution:
python2.5 /usr/local/bin/appcfg upload_data --config_file=app/bulkloader.yaml --filename=app/fixtures/teams.csv --kind=app_team --url=http://localhost:8080/_ah/remote_api app
- 1. AppEngine bulkloader export Modèle avec la propriété auto-définie
- 2. AppEngine Bulkloader génère des données lors de l'importation
- 3. BulkLoader -export_transform
- 4. Importation de données GeoPt à l'aide de Google AppEngine BulkLoader YAML
- 5. Bulkloader liste d'importation d'entiers
- 6. Syntaxe de Bulkloader Erreur
- 7. Bulkloader erreur de taille CSV
- 8. FTP passif avec Appengine
- 9. google checkout avec appengine
- 10. Appengine java.lang.IllegalAccessError avec ArrayElementNodeProperty
- 11. Comment configurer la propriété d'exportation db.ListProperty (db.Key) dans le bulkloader
- 12. Flex 4 avec PHP et BulkLoader - Les ressources sont supprimées
- 13. Google App Engine Bulkloader « Discussion inattendue mort »
- 14. problème avec instance dynamique appengine
- 15. AppEngine Python requête avec agrégat
- 16. ACL Appengine avec authentification Google
- 17. gwt google appengine avec hibernate
- 18. Utiliser PayPal avec AppEngine (Python)
- 19. Erreur du serveur (Google Apps Engine) lors de l'exécution du bulkloader personnalisé
- 20. Appengine Python erreur en vrac à l'exportation
- 21. GZipOutputStream & appengine
- 22. Quelles informations d'identification devrais-je ajouter à Google App Engine BulkLoader sur le serveur de développement?
- 23. Bulkloader de Google App Engine "L'authentification a échoué"
- 24. Accès aux données cartographiques locales avec AppEngine
- 25. Projet avec Guava, GWT et AppEngine
- 26. Problème avec l'API google appengine channel (Java)
- 27. Utiliser l'API Appengine Channel avec DART
- 28. avec l'envoi de courriels Python, Google AppEngine
- 29. tâche Google Appengine CRON avec spring velocityengineutil
- 30. AppEngine java.util.Date avec Timezone dans Struts2
Eh bien Aaron..Thanks pour vos answer..its un peu de temps I attendu cela :-) va l'essayer et vous mettre à jour bientôt. – SRC