Google App Engine:对数据存储中的条目进行计数

玛纳斯(Manas Chaturvedi)

我正在使用Google App Engine和Python作为后端语言来开发Web应用程序。我需要根据一定数量的参数计算数据存储中条目的总数。

这是相同的代码:

main.py

import os
import webapp2
import jinja2
from google.appengine.ext import db
from random import randint

template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape=True)

class Handler(webapp2.RequestHandler):
    def write(self, *a, **kw):
        self.response.out.write(*a, **kw)
    def render_str(self, template, **params):
        t = jinja_env.get_template(template)
        return t.render(params)
    def render(self, template, **kw):
        self.write(self.render_str(template, **kw))

#databases

class Survey(db.Model):
    vam_id = db.StringProperty()
    subject = db.StringProperty(required = True)
    description = db.TextProperty(required = True)
    created = db.DateTimeProperty(auto_now_add = True)
    q1 = db.TextProperty(required = True)
    o11 = db.TextProperty(required = True)
    o12 = db.TextProperty(required = True)
    o13 = db.TextProperty(required = True)
    q2 = db.TextProperty(required = True)
    o21 = db.TextProperty(required = True)
    o22 = db.TextProperty(required = True)
    o23 = db.TextProperty(required = True)
    q3 = db.TextProperty(required = True)
    o31 = db.TextProperty(required = True)
    o32 = db.TextProperty(required = True)
    o33 = db.TextProperty(required = True)
    q4 = db.TextProperty(required = True)
    o41 = db.TextProperty(required = True)
    o42 = db.TextProperty(required = True)
    o43 = db.TextProperty(required = True) 
    q5 = db.TextProperty(required = True)
    o51 = db.TextProperty(required = True)
    o52 = db.TextProperty(required = True)
    o53 = db.TextProperty(required = True)

class Votes(db.Model):
    vam_id = db.StringProperty(required = True)
    q1_opt = db.TextProperty(required = True)
    q2_opt = db.TextProperty(required = True)
    q3_opt = db.TextProperty(required = True)
    q4_opt = db.TextProperty(required = True)
    q5_opt = db.TextProperty(required = True)


"""a = Survey(vam_id = "01", subject = "Metro", description = "A survey on Mumbai Metro",
            q1 = "How do you find rates fixed for Metros?", 
            o11 = "Appropriate", o12 = "Somewhat appropriate", o13 = "Inappropriate",
            q2 = "How satisfied are you with the customer service",
            o21 = "Extremely satisfied", o22 = "Moderately satisfied", o23 = "Not satisfied",
            q3 = "How satisfied are you with the interior of Mumbai Metro?",
            o31 = "Extremely satisfied", o32 = "Moderately satisfied", o33 = "Not satisfied",
            q4 = "Do you think travelling by Metro is more convenient than other transport?",
            o41 = "Yes", o42 = "No", o43 = "Can't say",
            q5 = "How will you rate Mumbai Metro?",
            o51 = "Very good", o52 = "Good", o53 = "Bad")  

a.put()         """  

class MainPage(Handler):
    def get(self):
        self.render("homepage.html")

class NewSurvey(Handler):
    def get(self):
        self.render("newsurvey.html")
    def post(self):
        vam_id = str(randint(1, 500))
        subject = self.request.get("title")
        description = self.request.get("description")
        q1 = self.request.get("q1")
        o11 = self.request.get("o11")
        o12 = self.request.get("o12")
        o13 = self.request.get("o13")
        q2 = self.request.get("q2")
        o21 = self.request.get("o21")
        o22 = self.request.get("o22")
        o23 = self.request.get("o23")
        q3 = self.request.get("q3")
        o31 = self.request.get("o31")
        o32 = self.request.get("o32")
        o33 = self.request.get("o33")
        q4 = self.request.get("q4")
        o41 = self.request.get("o41")
        o42 = self.request.get("o42")
        o43 = self.request.get("o43") 
        q5 = self.request.get("q5")
        o51 = self.request.get("o51")
        o52 = self.request.get("o52")
        o53 = self.request.get("o53")

        a = Survey(vam_id = vam_id, subject = subject, description = description, q1 = q1,
                    o11 = o11, o12 = o12, o13 = o13, q2 = q2,
                    o21 = o21, o22 = o22, o23 = o23, q3 = q3,
                    o31 = o31, o32 = o32, o33 = o33, q4 = q4,
                    o41 = o41, o42 = o42, o43 = o43, q5 = q5,
                    o51 = o51, o52 = o52, o53 = o53)
        a.put()            

class Existing(Handler):
    def get(self):
        surveys = Survey.all()
        self.render("existingsurvey.html", surveys = surveys)

class PermaSurvey(Handler):
    def get(self):
        vam = self.request.get("vam_id")
        su = Survey.all().filter("vam_id =", vam).get()
        self.render("perma.html", su = su)
    def post(self):
        vam = self.request.get("vam_id")
        q1_opt = self.request.get("q1")
        q2_opt = self.request.get("q2")
        q3_opt = self.request.get("q3")
        q4_opt = self.request.get("q4")
        q5_opt = self.request.get("q5")

        v = Votes(vam_id = vam, q1_opt = q1_opt, q2_opt = q2_opt, q3_opt = q3_opt,
                    q4_opt = q4_opt, q5_opt = q5_opt)  
        v.put()

        q11count = Votes.all().filter("vam_id = ", vam)
        q1count = q11count.filter("q1_opt = ", q1_opt).count()
        self.response.write(q1count)

app = webapp2.WSGIApplication([('/', MainPage),
                               ('/new', NewSurvey),
                               ('/existing', Existing),
                               ('/perma', PermaSurvey)], debug=True)

这是“投票”数据存储的外观:

在此处输入图片说明

但是,我们main.py文件中的以下查询始终将计数返回为“ 0”:

q11count = Votes.all().filter("vam_id = ", vam)
q1count = q11count.filter("q1_opt = ", q1_opt).count()
self.response.write(q1count)

我的查询语法出了什么问题?

皮吉切克

似乎您无法对此进行过滤TextProperty下面的代码段将无法正常运行。

filter("q1_opt = ", q1_opt)

如果您需要对该属性进行过滤,则可能必须将其类型更改为其他类型,例如StringProperty

与StringProperty不同,TextProperty值的长度可以超过500个字符。但是,TextProperty值未建立索引,因此无法在过滤器或排序顺序中使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google App Engine数据存储区中的索引和索引条目限制

来自分类Dev

Go中的Google App Engine数据存储分片

来自分类Dev

Google App Engine中的数据存储区与Cloud SQL

来自分类Dev

Google App Engine数据存储区中的多线程

来自分类Dev

连接到Google App Engine数据存储

来自分类Dev

Google App Engine投票计数

来自分类Dev

对Google App Engine数据存储区中的所有用户使用相同的父密钥进行写交易是否合理?

来自分类Dev

使用Maven进行Google App Engine数据存储单元测试

来自分类Dev

如何使用Google数据存储在Google App Engine中动态创建多个实体(Python)

来自分类Dev

Google App Engine数据存储区查询返回陈旧数据

来自分类Dev

Google App Engine(Python)-数据存储区正在复制实体

来自分类Dev

Google App Engine数据存储区的大表是如何设计的?

来自分类Dev

Google App Engine数据存储-测试查询失败

来自分类Dev

Google App Engine数据存储区-密钥与标识符

来自分类Dev

Google App Engine + Go +数据存储+添加/更新/删除记录

来自分类Dev

Google App Engine NDB数据存储区的简单说明

来自分类Dev

Google App Engine启动器删除数据存储

来自分类Dev

Google App Engine模块无数据存储访问权限

来自分类Dev

查询所有实体的Google App Engine数据存储区

来自分类Dev

在Google App Engine上运行数据存储区查询

来自分类Dev

Google App Engine数据存储区按属性删除实体

来自分类Dev

Google App Engine数据存储区获得财产的价值

来自分类Dev

Google App Engine数据存储区如何获取Key <?>的实体

来自分类Dev

在Google App Engine数据存储区上执行大型查询

来自分类Dev

Google App Engine数据存储区非复合索引

来自分类Dev

Google App Engine中的RSA

来自分类Dev

如何使用Java从Google App Engine数据存储区中的实体提取属性

来自分类Dev

在Google App Engine中,如何在更新SDK之后使开发数据存储区保持可用状态?

来自分类Dev

如何在Google App Engine数据存储区中添加动态属性

Related 相关文章

  1. 1

    Google App Engine数据存储区中的索引和索引条目限制

  2. 2

    Go中的Google App Engine数据存储分片

  3. 3

    Google App Engine中的数据存储区与Cloud SQL

  4. 4

    Google App Engine数据存储区中的多线程

  5. 5

    连接到Google App Engine数据存储

  6. 6

    Google App Engine投票计数

  7. 7

    对Google App Engine数据存储区中的所有用户使用相同的父密钥进行写交易是否合理?

  8. 8

    使用Maven进行Google App Engine数据存储单元测试

  9. 9

    如何使用Google数据存储在Google App Engine中动态创建多个实体(Python)

  10. 10

    Google App Engine数据存储区查询返回陈旧数据

  11. 11

    Google App Engine(Python)-数据存储区正在复制实体

  12. 12

    Google App Engine数据存储区的大表是如何设计的?

  13. 13

    Google App Engine数据存储-测试查询失败

  14. 14

    Google App Engine数据存储区-密钥与标识符

  15. 15

    Google App Engine + Go +数据存储+添加/更新/删除记录

  16. 16

    Google App Engine NDB数据存储区的简单说明

  17. 17

    Google App Engine启动器删除数据存储

  18. 18

    Google App Engine模块无数据存储访问权限

  19. 19

    查询所有实体的Google App Engine数据存储区

  20. 20

    在Google App Engine上运行数据存储区查询

  21. 21

    Google App Engine数据存储区按属性删除实体

  22. 22

    Google App Engine数据存储区获得财产的价值

  23. 23

    Google App Engine数据存储区如何获取Key <?>的实体

  24. 24

    在Google App Engine数据存储区上执行大型查询

  25. 25

    Google App Engine数据存储区非复合索引

  26. 26

    Google App Engine中的RSA

  27. 27

    如何使用Java从Google App Engine数据存储区中的实体提取属性

  28. 28

    在Google App Engine中,如何在更新SDK之后使开发数据存储区保持可用状态?

  29. 29

    如何在Google App Engine数据存储区中添加动态属性

热门标签

归档