我正在尝试从数据存储表中删除type
字段值等于“TEST”的所有实体。
实际上我的表结构是这样的:
表测试
id | type | value
---------------------------------
1 | TEST | aksjdh
2 | FOO | wer
3 | TEST | gg
4 | TEST | werqwer
5 | BAR | akvcvcxjdh
我可以使用通过 URL 请求调用的这段 python 代码删除所有实体:
import cgi
import datetime
import urllib
import webapp2
from google.appengine.ext import db
class Test(db.Model):
id = db.StringProperty()
type = db.StringProperty()
value = db.StringProperty()
class TestHandler(webapp2.RequestHandler):
def get(self):
...
db.delete(Test.all())
app = webapp2.WSGIApplication([
('/deleteTest', TestHandler)
], debug=True)
我想知道的是:在前面的代码中,要删除所有Test的实体,我已经使用了all()
Test类的方法,我是否也必须使用相同的逻辑来只删除一个子集那些实体,基于它们的type
价值?我应该将整个列表存储在 Test 对象中,然后继续进行进一步过滤吗?
换句话说,我能做
db.delete(db.GqlQuery("SELECT * FROM TEST WHERE type = :1", "TEST"))
或者更好地做类似的事情
#I don't know if something like this exists, it's just an example
testList = Test.all()
db.delete(testList.filter("type", "TEST"))
请注意,在第二个示例中,我首先实例化了某种 Test 对象,然后删除了从该对象开始的实体。
我希望你明白我的意思,这件事在我看来也很棘手,我不确定我是否解释得很好..
在此先感谢,最好的问候