2010-04-13 3 views
2

Il semble que la contrainte unique ne soit pas prise en charge de manière native dans GAE, bien que one can enforce unique check before putting an object to store.Contrainte unique au niveau de données dans GAE

Mais c'était en janvier 2009, qu'en est-il maintenant? Puis-je spécifier une contrainte unique sur une colonne lors de la création d'un schéma? c'est-à-dire

class Account(db.Model): 
    name = db.StringProperty() 
    email = db.StringProperty() as unique # something like this 
    @classmethod 
    def create(cls, name, email): 
    a = Account(name=name, email=email) 
    a.put() 
    return a 

Répondre

4

Non, vous ne pouvez toujours pas spécifier d'élément unique lors de la création du schéma.

Ce problème se trouve au numéro here si vous souhaitez le visionner. Il n'apparaît pas encore sur leur liste de features on deck, il semble donc qu'il y ait d'autres fonctionnalités sur lesquelles ils vont travailler en premier.

+4

La prise en charge de propriétés uniques autres que le nom de clé nécessiterait des transactions globales, il est donc peu probable que nous l'ajoutions de sitôt. Pour l'instant, c'est à vous de mettre en œuvre l'unicité, par le biais de noms de clés ou d'entités «lookaside». –

0

Vous pouvez obtenir une "contrainte unique" dans le magasin de données du moteur de l'application as described here. L'exemple est présenté en Java, mais vous devriez pouvoir appliquer les mêmes concepts en python.