Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何编写根据字段长度过滤的gql查询?_Python_Google App Engine - Fatal编程技术网

Python 如何编写根据字段长度过滤的gql查询?

Python 如何编写根据字段长度过滤的gql查询?,python,google-app-engine,Python,Google App Engine,我想根据数据存储中某个字段的长度筛选查询,但似乎无法在WHERE子句中包含len函数 q = db.GqlQuery("SELECT CommentCode FROM Comments " + "WHERE RefObjType = 'paper' AND RefObjID = :1 AND len(CommentCode) = :2" + "ORDER BY CommentCode DESC ", RefObjID, 1) 这

我想根据数据存储中某个字段的长度筛选查询,但似乎无法在WHERE子句中包含len函数

q = db.GqlQuery("SELECT CommentCode FROM Comments " + 
                "WHERE RefObjType = 'paper' AND RefObjID = :1 AND len(CommentCode) = :2" +
                "ORDER BY CommentCode DESC ", RefObjID, 1)
这将导致:
BadQueryError:Parse错误:符号处的WHERE条件无效(

有谁能给我举个例子,说明我该如何让它发挥作用

REBOJID部分可以工作,因为如果我省略len()过滤器,整个查询都可以工作


谢谢。

由于数据存储的工作方式,您不能这样做(至少据我所知)。字符串的长度需要是一个属性(使用
db.Expando可以是静态的,也可以是动态的)您的
模型的
,然后在此基础上进行筛选。

一个可能的解决方案:
修改查询以按描述顺序检索结果,然后在查询检索后通过访问所需结果来处理结果

更改查询:

  q = db.GqlQuery("SELECT CommentCode FROM Comments " + 
                    "WHERE RefObjType = 'paper' AND RefObjID = :1" +
                    "ORDER BY CommentCode DESC ", RefObjID, 1)

在此之后,选择带有循环和条件语句的
length(CommentCode)==2的行。

请参阅谢谢。这为我找到答案指明了方向。