Python Google App Engine: the best way to say: "If the object does not exist in the data store, do something"?

I ask because the way I have now seems really strange. Basically, I say: "If there is an exception, do something and do nothing." Here is a sample code:

 try:
        db.get(db.Key(uid))
 except:
        newUser = User(key_name=str(uid)) 
        newUser.first_name = self.request.get("first")
        newUser.last_name = self.request.get("last")
        newUser.email = self.request.get("email") 
        newUser.phone = self.request.get("phone")
        db.put(newUser)

Thank!

+3
source share
2 answers

Use User.get_by_key_name(str(uid))instead. He will return Noneif the entity does not exist.

See http://code.google.com/appengine/docs/python/datastore/modelclass.html#Model_get_by_key_name for details .

User.get_or_insert(str(uid)) may also be suitable for what you are trying to do.

+6

db.Key None, uid? , :

if db.Key(uid) == None:
    newUser = User(key_name=str(uid)) 
    newUser.first_name = self.request.get("first")
    newUser.last_name = self.request.get("last")
    newUser.email = self.request.get("email") 
    newUser.phone = self.request.get("phone")
    db.put(newUser)

EDIT: , , , , . try, , , , ,

try:
    newUser = User(key_name=str(uid)) 
    newUser.first_name = self.request.get("first")
    newUser.last_name = self.request.get("last")
    newUser.email = self.request.get("email") 
    newUser.phone = self.request.get("phone")
    db.put(newUser)
except:
    pass

- .

+1

Source: https://habr.com/ru/post/1753366/


All Articles