【发布时间】:2013-10-10 17:08:09
【问题描述】:
user_exists = db.GqlQuery("select * from User where user_id in '%s'" % username)
我正在尝试进行测试以查看特定用户 ID (user_id) 是否已存在于数据库 (User) 中。基本上,如果“user_exists”有任何结果,我想产生一个错误并重新呈现表单,如果它是空的,我想继续存储用户数据。如何判断 'user_exists' 是否包含结果?
我试过了,
if user_exists:
但这种情况每次都会过去。也就是说,对于我传入的每个名称,它总是正确的,无论它是否已经存在。
我也试过了,
if len(user_exists) > 0:
但是得到一个 Gql 查询对象没有 len 的错误。如果 user_exists 是一个 Gql 查询对象,我如何从中提取某种列表以便以我尝试的方式简单地检查它的内容?
我过去曾在 jinja 模板中使用 for 循环遍历此类对象,并且我认为该对象通常也可以被视为可迭代对象,例如列表。
【问题讨论】:
-
需要注意的一点 - 这种“使用查询”的方法不能保证您不会创建重复的 user_id 考虑使用 user_id 作为实体的键。然后,这将允许您执行一个更有效的 get_by_id 并且您不能有重复。
-
这已经在我脑海中闪过,但我不确定如何去做。不过,我没有理由不在文档中查找此内容。
标签: python google-app-engine google-cloud-datastore gql