AppEngine créer et fichier YAML export
-
30-09-2019 - |
Question
je suis d'avoir du mal à créer un fichier et l'exportation vers .yaml. Je utilise Google App Engine avec Python 2.5. Ne comprendre les doc's YAML, il me fait confus.
Ce que je veux est de créer un fichier et l'enregistrer. D'une manière nécessaire pour obtenir des entités de modèles.
class SaveYAML(webapp.RequestHandler):
def post(self):
user = db.Query(models.User)
user = user.filter('user =', users.get_current_user())
users = user.fetch(limit = 1)
for user in users:
print(user.name, user.adress, user.phone, user.city)
self.response.headers['Content-Type'] = 'application/yaml'
self.response.headers['Content-Disposition'] = 'filename = myYaml.yaml'
Avec cet extrait que je peux voir dans un navigateur, lorsque je clique sur un bouton les informations récupérées à partir de modèles. ESt Peut-être en raison de la méthode d'impression, mais il doesnt créer un fichier Mais quand je télécharger mon application Google App Engine il doesnt montrent les mêmes informations. Elle montre que 'Status 200 Ok'.
point que quelqu'un peut me dans la bonne direction? Dois-je bibliothèque PyYAML d'importation?
J'ai changé un code à:
print(yaml.dump(user, sys.stdout))
et le résultat était cela dans un navigateur:
- !!binary |
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAnACgDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2WxvX
h8zzNxhEjgk87fmPI9R6+lbKsGUMpBBGQR3rAhKxRTyOyqglck9Mc1nX/iVdGb7JZr9qnlBMcCc7
T3Psvqeg7elAG7rmv6f4esGu7+ZUXoq5+Zz6Cuc8I+ItS8X6pLqK/wCiaXbKYhbjkyuRnJOOw7Cs
jXvC8epW0Ta5IdR1O7dTFDG5Eaeirj1xy3oG6dK7rQdGtvDuiQ2FuoCRLl2A+8x5J/OtFKKhtqZu
MnPfQoajeXDeLtMtICfLG55cNj5Qp6/iVoqLQAb/AMQalqLDKoRBGf1NFceGqOpT9o+t/u6fgdNZ
csuTt/T/ABMGTVb/AFu4NroW37H5rG5upEOB83AUHr9O/r2roI9DtfDsUt1GHmaTBmmc5kLdBz6d
sdB246XrcIlpKgXaPNOOBz8wqtqkFxreoRWSKRp0ZJuJM43H+6PXPTPufw6DIytCk/0ttauQv2d8
rbr3Ck8yKPQ9AP7oB7muk1m+S00We5VgVKfKQeDVe80yO3+eFAIO6gf6v6f7P8vpXP63lfsmnbnM
c8ykoozhepIrlxk3Gi1Hd6L1ehrQinUV9lr92p0PhezNnoMAcfvJcyv9W5orWhKGFDEQU2jaR0xR
XRCKhFRjsjOUnJuT6mALmOIyxujHMjE4478d6kXUUXIHnAZ/vH8e9FFUIY2roq8+dn03HH86wYby
3bxFLduji3twYolxk5IyT196KKTipWv0GpNXsbNv4gtYZ/kEgjY/MpXoe5HP/wCv+ZRRTEf/2Q==
_name: !!python/unicode 'Ana Ferreira'
_parent: null
_parent_key: null
_adress: !!python/unicode 'Porto'
_phone: !!python/unicode '1234569789'
_user: *id002
None
Status: 200 OK
Cache-Control: no-cache
Content-Type: text/yaml
Content-Disposition: filename = myYaml.yaml
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0
Changé le code, mais les données ne sont présentées par le navigateur.
La solution
Ne pas utiliser l'impression, l'utilisation self.response.out.write(...)
.
Oui, vous voulez yaml d'importation yaml de sortie, il sera plus facile.
Essayez ceci:
import yaml
users = model.Users.all().fetch(10)
users = [{'user': {'name': user.name,
'address': user.address,
'phone': user.phone,
'city': user.city}}
for user in users]
self.response.out.write(yaml.dump(users, default_flow_style=False))
Vous pouvez consulter la yaml docs pour plus d'informations sur le formatage de la sortie.