2
user_exists = db.GqlQuery("select * from User where user_id in '%s'" % username)

我正在尝试进行测试以查看数据库(用户)中是否已存在特定的用户 ID(user_id)。基本上,如果“user_exists”有任何结果,我想产生一个错误并重新呈现表单,如果它是空的,我想继续存储用户数据。如何判断“user_exists”是否包含结果?

我努力了,

if user_exists:

但这种情况每次都会过去。也就是说,对于我传入的每个名称,无论它是否已经存在,它总是正确的。

我也试过,

if len(user_exists) > 0:

但是得到一个 Gql 查询对象没有 len 的错误。如果 user_exists 是一个 Gql 查询对象,我怎么能从中提取某种列表,以便以我尝试的方式简单地检查它的内容?

我过去曾在 jinja 模板中使用 for 循环遍历此类对象,并且我假设该对象通常也可以被视为可迭代对象,例如列表。

4

1 回答 1

3

如果您正在调用.get().fetch(1)在 GqlQuery 对象上,您的代码将起作用。

例子:

user = db.GqlQuery("select * from User where user_id = :1", username).get()
if user:
    # now `user` will contain a value if the query returns a value or None if not

您应该更喜欢使用查询参数而不是字符串插值,因为使用 API 可以使您的代码不易受到 SQL 注入攻击。

于 2013-10-10T17:18:58.400 回答