2009-10-23 7 views
0

Je suis très nouveau sur SQL et plus sur GQL utilisé dans le moteur de l'application Google. J'ai réussi à pousser mes données vers les serveurs de Google, mais je ne suis pas en mesure de trouver un moyen d'interroger les entités que j'ai chargées dans le datastrore.Problème de requête dans le moteur de l'application Google

est ici le problème, je veux interroger uniquement les noms et les numéros d'un des contacts de l'utilisateur marqués par ID utilisateur en dehors des autres colonnes comme indiqué ci-dessous,

Name Number  User_id Country  
Rob 0065114146 654351 singapore 
Mark 0065132411 654351 singapore 
Tina 0065221916 846611 singapore 
Nick 0065214126 846611 singapore 

Ceci est mon fichier Models.py dans lequel je que mes MyContacts définition de l'entité,

Class MyContacts(db.Model): 
    Name = db.StringProperty(required=True) 
    Number = db.PhoneNumberProperty(required=True) 
    User_id = db.IntegerProperty(required=True) 
    Country = db.StringProperty() 

Je prends l'ID utilisateur en entrée de l'interface utilisateur, mais je ne suis pas en mesure de trouver un moyen de mettre les données à l'aide de la requête. S'il vous plaît, si quelqu'un peut m'aider à créer la requête en GQL, ce serait une aide précieuse pour moi. J'ai essayé toutes sortes de choses comme SELECT * FROM MyContacts WHERE __key__ = KEY('user_id',654351) mais je n'ai rien.

S'il vous plaît aidez-moi.

+1

Il serait utile de voir la définition de votre modèle. –

+0

Oui, nous avons vraiment besoin de voir votre modèle pour MyContacts pour dire quelque chose d'utile. –

+0

Ceci est mon fichier Models.py sous lequel j'ai mon entité de MyContacts, MyContacts de classe (db.Model): Nom = db.StringProperty (requis = True) = Nombre db.PhoneNumberProperty (requis = True) User_id = db.IntegerProperty (required = True) Pays = db.StringProperty() – Arun

Répondre

1

Depuis User_id est un IntegerProperty, vous devez interroger comme ceci:

db.GqlQuery("SELECT * FROM MyContacts WHERE User_id = :1", some_int) 

ou de manière équivalente avec une requête:

MyContacts.all().filter('User_id =', some_int) 

Notez que si 'User_id' est tiré d'une API Utilisateurs utilisateur objet, vous ne devriez pas le lancer dans un int - il n'est pas garanti d'entrer dans 64 bits, donc vous devriez soit le stocker en tant que chaîne ou en tant que UserProperty.

+0

Existe-t-il un moyen de récupérer uniquement les deux colonnes "Name" et "Number" au lieu de toutes les colonnes car je ne veux afficher que le nom et son nombre sur l'interface utilisateur, de sorte que je peux obtenir une réponse plus rapide. – Arun

+0

Non - les entités sont toujours renvoyées dans leur ensemble. Vous pouvez le dénormaliser en tables séparées, mais ce n'est vraiment pas nécessaire pour un modèle aussi petit que celui-ci. –

Questions connexes