在gae后台判断数据是否存在 实体的ID DateTime时区的问题

来源:互联网 发布:南通家纺城网络批发 编辑:程序博客网 时间:2024/05/20 22:39

今天在自己的网站上添加了个评论的功能,因为要手记发表评论者的email跟名字,就涉及到了数据判断的问题,如果email已经在数据库里就不保存,否则就保存,

 

               client=Client()

 client.name=self.request.get('name')

       client.email=self.request.get('email')

                 email=client.email

                 client.date =self.request.get('date')

 

 query = db.GqlQuery("SELECT * FROM Client") 将所有客户数据取出

 s=[]

 for i in query:

     s.append(i.email)

if email in s: 这里就是判断

  pass

else:

  client.put()

而不能直接这样判断:

        query = db.GqlQuery("SELECT * FROM Client") 

for i in query:

if email==i.email:  这里明显是错误的,因为他在循环的时候是验证每一次的i.email的,所以就不准确

pass

else:

client.put()

 

 

还有个问题就是在后台判断实体的ID:

 

 

def get(self,id):

 

infoId = int(id)

info = Info.get_by_id(infoId)

 

if info.category.key().id()==3001 or info.category.key().id()==2:

   value=1

else:

   value=0

 

 

这里的判断:info.category.key().id()==3001,而不是像django里的info.category.key.id==3001!

 

 

 

最后我还有个错误,因为总是命名不规范,我先把程序上传到gae,后来就把不规范的class名字改了,结果就全错了,所以注意::

 

     如果在本地跑没事,但是上传到gae的程序的类model

 

 

gae的db.DateTimeProperty()默认的是日期时间值作为 UTC 时区存储

所以就要改!

  先写一个类:

class JuxinUtils(object):

def cntime(self):

return datetime.datetime.utcnow() + datetime.timedelta(hours=+8)

然后在保存日期的时候这样保存

 

                juxinUtils = JuxinUtils()

                ms.date = juxinUtils.cntime()

                ms.put()

就是在UTC时区加八个小时就是北京时间!

原创粉丝点击