[PYTHON] (Débutant) Utilisation de base du magasin de données de Google App Engine

supposition

from google.appengine.Méthode utilisant ext import db.(db au lieu de ndb)


 GAE (Google App Engine) * Je pense que c'est la même chose avec GCE, mais je ne l'ai jamais utilisé
Python2.7

# Fonctionnement de la banque de données depuis Cloud Console

## Signification des mots

 Une entité équivaut à un enregistrement dans le SGBDR. Correspond à une ligne dans un tableau.
 Le type est équivalent à une table dans le SGBDR.
 L'identificateur de clé est la clé primaire dans le SGBDR.
 L'espace de noms est inconnu.

## Créer une entité

 Passez à l'écran de création depuis "Créer une entité" en haut de l'écran du magasin de données.

 --Namespace: [Par défaut]
 --Type: UserData
 - Identificateur de clé: Nom personnalisé: xxxxxxxxxxxxxxxxx (lineId)

 Ce qui suit est ajouté en sélectionnant "Ajouter une propriété".

 Exemple de lineId:

 --Nom: lineId
 --Type: Chaîne de caractères
 --Valeur: xxxxxxxxxxxxxxxxx (lineId)

 Liste des propriétés ajoutées.

- lineId:xxxxxxxxxxxxxxxxx(lineId)
- dashId:shoshuriki
 --message: quelqu'un vous appelle
- registrationTime:2016/01/02 00:27:12

 * Je ne suis pas sûr de "l'enregistrement d'index", mais il semble que les performances de recherche s'amélioreront si vous vous inscrivez, alors vérifiez-le. Le compromis est inconnu. (L'insertion ralentit ??)

## Référencement et mise à jour des entités

 Sélectionnez "Nom / ID" pour passer à l'écran de mise à jour. Vous pouvez également vérifier la valeur ici.

 --Espace de nom, type, clé (identificateur de clé), ceux-ci ne peuvent pas être mis à jour (modifiés).
 --Les propriétés peuvent être mises à jour. (Nom, type, valeur, qui peuvent tous être mis à jour.)
 --Sélectionnez "Enregistrer" pour enregistrer dans le magasin de données.

## Supprimer l'entité

 Sélectionnez dans la case à cocher à gauche de "Nom / ID"
 Peut être supprimé de «Supprimer» sur le côté droit de «Créer une entité».

## Rechercher des entités

 Sélectionnez un type de liste déroulante ou
 Définir les conditions à partir de "Filtrer les entités"
 Il est possible de restreindre les entités à afficher.


# Fonctionnement du magasin de données depuis App Engine

 [PostScript 2017/1/4 à partir d'ici]
 Il existe deux façons de faire fonctionner le magasin de données à partir d'App Engine.

- db (from google.appengine.ext import db)
- ndb (from google.appengine.ext import ndb)

 Il n'y a aucune différence pour pouvoir faire fonctionner la banque de données dans les deux cas, mais comme ndb est un module plus récent, il semble que ndb soit recommandé lors du démarrage à partir de maintenant.
 Si vous devez utiliser le module db pour une raison quelconque, nous vous serions reconnaissants de bien vouloir consulter cet article.

 Qu'est-ce que ndb
https://cloud.google.com/appengine/docs/python/ndb/?hl=ja
 À propos de la migration de db vers ndb
https://cloud.google.com/appengine/docs/python/ndb/db_to_ndb?hl=ja
 [PostScript 2017/1/4 jusqu'à présent]


 Reportez-vous à la page suivante.
https://cloud.google.com/appengine/docs/python/datastore/entities


## Créer une entité

 Avant de créer l'entité, créez la classe sous-jacente.

from google.appengine.ext import db

class UserData(db.Model): lineId = db.StringProperty() dashId = db.StringProperty() message = db.StringProperty() registrationTime = db.StringProperty()


 Créez une instance basée sur cela et placez-la dans le magasin de données pour la créer en tant qu'entité.

userData = UserData( key_name = 'xxxxx(lineId)', lineId = 'xxxxx(lineId)', dashId = 'shoshuriki', message = u'Quelqu'un t'appelle', registrationTime = '2016/01/02 00:27:12', ) userData.put()


 Voici une comparaison des éléments définis dans Cloud Platform.

 --Type: UserData (Le nom de la classe devient le type (kind) tel quel. Si vous voulez le spécifier, ajoutez le type de fonction membre et renvoyez la chaîne de caractères, et il devient le type (non confirmé))
 --Key identifier: chaîne de caractères affectée à key_name
 --Namespace: Non spécifié (où spécifier est inconnu)

## Référencement et mise à jour des entités

 Une méthode qui ne fonctionne que si vous connaissez l'identificateur de clé.
 Récupérez l'objet clé de l'entité à partir de l'identificateur de clé et obtenez l'entité à partir de l'objet clé.
 Étant donné que l'entité est une classe créée par vous-même, vous pouvez librement faire référence aux propriétés et y écrire.
 S'il est écrit, envoyez l'entité au magasin de données en la plaçant à la fin.

try: key = db.Key.from_path('UserData', 'xxxxx(lineId)') userData = db.get(key) old_message = userData.message #Pièce de référence userData.message = u'Veuillez venir lentement' #Mettre à jour une partie userData.put() #Si seulement référence, mettre n'est pas nécessaire except: print(u'Impossible de localiser')


 * Un bloc try est requis car une exception se produira si la cible n'est pas trouvée.

## Supprimer l'entité

 Une méthode qui ne fonctionne que si vous connaissez l'identificateur de clé.
 Récupérez l'objet clé de l'entité à partir de l'identificateur de clé et supprimez l'entité.

try: key = db.Key.from_path('UserData', 'xxxxx(lineId)') db.delete(key) except: print(u'Impossible de localiser')


 * Un bloc try est requis car une exception se produira si la cible n'est pas trouvée.

## Rechercher des entités

 Pour un type, utilisez la valeur de la propriété pour affiner et obtenir le résultat.
 S'il n'y a qu'une seule entité cible, il est prudent de spécifier limit = 1.

try: q = UserData.all() q.filter('dashId = ', 'shoshuriki') for p in q.run(limit=1): lineId = p.lineId #Inverser lineId à partir de dashId except: print(u'Impossible de localiser')


 * Un bloc try est requis car une exception se produira si la cible n'est pas trouvée.
 * Comment inverser key_name de dashId?

# référence

 Google Cloud Platform-Datastore
https://console.cloud.google.com/datastore

 Migration de la bibliothèque client DB vers NDB (facile à comprendre car l'utilisation est simple)
https://cloud.google.com/appengine/docs/python/ndb/db_to_ndb?hl=ja


Recommended Posts

(Débutant) Utilisation de base du magasin de données de Google App Engine
Utilisez ndb.tasklet avec Google App Engine
Utilisation de base de Btrfs dans Arch Linux
Utiliser des modules externes avec Google App Engine
Tweet (API 1.1) avec Google App Engine pour Python
Intégration de la banque de données Google App Engine et de l'API de recherche
Utilisation basique de flask-classy
Utilisation de base de Jinja2
Utilisation de base de SQL Alchemy
Déployer l'application Django sur Google App Engine (Python3)
PIL en Python sur Windows8 (pour Google App Engine)
Comment utiliser Django avec Google App Engine / Python
Version d'exécution de l'environnement standard Google App Engine / Python
Utilisation super basique de pytest
Utilisation de base de l'interface graphique PySimple
Résumé de l'utilisation de base de Pandas
Utilisation basique de la f-string Python
Déployer des applications Go sur Google App Engine avec des actions GitHub
Publier le site gratuitement sur Google App Engine (note personnelle)
Développement Google AppEngine avec Docker
Création d'un environnement de développement avec Maven sur Google App Engine [Java]
Utilisation du fichier de propriétés avec l'environnement flexible Java 8 de Google App Engine
[Google App Engine] Objets utilisateur (traduction en japonais)
Utilisation de ImageField de Django avec AppEngine / Python
Je ne peux plus déployer avec le moteur d'application Google
À propos du problème que la version python de Google App Engine ne maille pas
Vérifier si le code HTML obtenu par les requêtes sur Google App Engine est déformé
[Introduction à Python] Utilisation de base des expressions lambda
Jusqu'à ce que vous exécutiez l'application Flask sur Google App Engine pour le moment
Divers mémorandums lors de l'utilisation du sdk de l'API de messagerie LINE avec Python (2.7.9) + Google App Engine