This drove me nuts an hour tonight. If you’re trying to get an entity key using something like:
yourKey = someString
candidate = Candidate( key=db.Key(yourKey) )
and you get a BadKeyError, it’s because the string you’re sending in isn’t the right length. Also, AppEngine doesn’t return None from the Key method but instead returns a BadKeyError exception. You can handle this by doing:
yourKey = someString
try:
candidate = Candidate( key=db.Key(yourKey) )
except db.BadKeyError:
# handle the exception here