我的Resource类的模型如下:
Resource.query(Resource.owner== 'abc@xyz.com').fetch()
我想提取所有者等于某个字符串的记录。 我尝试过以下查询。它不会给出错误,但也不会返回任何结果。
from tkinter import*
import tkinter as tk
import tkinter.simpledialog
def onChange(i):
btn_list[i].config(text='Updating...',bg='red')
btn_list[i].grid(in_=root,row=rw[i],column=2)
ans=tk.simpledialog.askfloat('Updating....', 'What is the current price?')
if ans:
btn_list[i].config(text='RM{:,.2f}'.format(ans))
btn_list[i].config(bg='yellow')
root=Tk()
Title=['Item','Unit','Price']
Item=['Kopi O','Teh O','Teh Tarik']
Unit= '1 cup'
Price=[1,0.9,1.2]
cl=[0,1,2]
rw=[1,2,3]
btn_list=[]
for i in range(3):
btnT1=tk.Button(root,text=Title[i],width=10,bg='light green')
btnT1.grid(in_=root,row=0,column=cl[i])
for x in range(3):
btnT2=tk.Button(root,text=Item[x],width=10)
btnT2.grid(in_=root,row=rw[x],column=0)
for y in range(3):
btnT3=tk.Button(root,text=Unit,width=10)
btnT3.grid(in_=root,row=rw[y],column=1)
for z in range(3):
btnT4=tk.Button(root,text=('RM {:,.2f}'.format(Price[z])),bg='yellow',width=10,\
command=lambda i=z:onChange(i))
btnT4.grid(in_=root,row=rw[z],column=2)
btn_list.append(btnT4)
root.mainloop()
根据我的理解,如果列具有重复值,则不应将其编入索引,这就是未对所有者编制索引的原因。如果我错了,请纠正我。
有人可以帮我弄清楚如何实现where子句的功能吗?
任何帮助表示赞赏!谢谢!
答案 0 :(得分:2)
试过这个。它第一次工作。您没有拥有“abc@xyz.com”所有者的资源实体,或者在放置实体时未对所有者属性编制索引(如果您在放置实体时索引= False,则可能会发生这种情况)。 / p>
我的测试:
Resource(id='1', owner='abc@xyz.com').put()
Resource(id='2', owner='abc@xyz.com').put()
resources = Resource.query(Resource.owner == 'abc@xyz.com').fetch()
assert len(resources) == 2
另外,您的评论:
根据我的理解,如果列具有重复值,则不应该 被索引,这就是为什么所有者没有索引。请纠正我 我错了。
你错了!
首先,数据存储模型中没有“列”的概念,因此我假设您的意思是“Property”。
接下来,澄清你的意思是“如果列属性有重复值”:
进一步详细说明,除非将属性indexed=False
添加到Property构造函数中,否则大多数属性(即接受基本类型的属性,如string,int,float等)都会自动编入索引。事实上,您真正需要担心索引的唯一时间是您需要执行更复杂的查询,这涉及查询更多的1个属性(即使这样,默认情况下,应用程序引擎开发服务器将自动创建索引您在本地index.yaml文件中),或使用不等式过滤器。
希望这有帮助!