Как запросить базу данных NDB по строковому значению - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь создать систему входа пользователя в систему с помощью flask-login, однако у меня возникают трудности с запросом адресов электронной почты с помощью функций запросов Google .

Я могу получить идентификатор,но так как пользователь не знает свой идентификатор при входе в систему, это не очень полезно.

Обзор того, что пытается сделать выдержка из кода (я жестко закодировал значения с целью получения доказательства).of-concept working):

username = 'abc@gmail.com'
check database for username
Return true if match is found

В этом руководстве , в 9'48 "пользователь пишет (что я предполагаю, что) запрос sqlAlchemy. Что будет эквивалентноэтот запрос с использованием функций Googles NDB?

class User(ndb.Model):
   name = ndb.StringProperty()
   email = ndb.StringProperty()
   password = ndb.StringProperty()

@login_manager.user_loader
def load_user(user_id):
return User.get_by_id(int(user_id))

@app.route('/', methods=['GET', 'POST'])
def testlogin():

#user = User.query(getattr(User, 'email') == 'abc@gmail.com')
#login_user(user)



check = 'abc@gmail.com'
query = User.query(User.email == check)
#print query
#query = User.query()
#queryuser = User.query().filter(User.email == 'abc@gmail.com')

#login_user(queryuser)
checkTable = User.get()
#checkTable.email = check
checkTable_key = checkTable
#query = checkTable_key.get()

print str(checkTable_key)

results = User.query().fetch() #this returns a list / array

#print(results)
#print "query all" + str(queryall)

#for  result in results: 
  #print "query all" + str(result.email) 


return "logged in "

1 Ответ

0 голосов
/ 23 декабря 2018
check = 'abc@gmail.com'
query = User.query(User.email == check).get() # this returns the User object, or None if not found

if query:
    return True
else:
    return False

# or try
return (query != None)

# or, just return the User object?

# if you just want to see if the user exists, you should do a keys_only query, which is free:

query = User.query(User.email == check).fetch(1, keys_only=True)
...