【问题标题】:How to query an NDB database by string value如何通过字符串值查询 NDB 数据库
【发布时间】:2019-05-22 16:02:09
【问题描述】:

我正在尝试使用 flask-login 创建一个用户登录系统,但是在查询电子邮件地址 using Google's query functions 时遇到了困难。

我可以获取ID,但是由于用户在登录时不会知道他们的ID,所以这不是很有用。

代码摘录试图做什么的概述(我已经硬编码值以使概念验证工作):

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

In this guide,在 9'48",用户编写(我假设是)一个 sqlAlchemy 查询。使用 Google 的 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 "

【问题讨论】:

    标签: python google-app-engine flask app-engine-ndb


    【解决方案1】:
    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)
    

    【讨论】:

    • 感谢您的帮助,解决方案是运行上面的查询,然后在 if 语句中使用query.email == check 来返回电子邮件而不是对象。
    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2020-01-07
    • 2017-07-30
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多