【发布时间】:2012-02-02 22:57:40
【问题描述】:
我需要迭代并删除我的数据存储区的所有记录。我正在使用 Google App engine Launcher 在本地主机上对其进行测试。怎么做?
当我试图以这种方式删除 Person 模型中的所有记录时:
qObj = Person.all()
db.delete(qObj)
我收到错误BadValueError: Property y must be a str or unicode instance, not a long
我猜模型数据类型有冲突。
class Person(db.Model):
name = db.StringProperty()
x = db.StringProperty()
y = db.StringProperty()
group = db.StringProperty()
字段 y = db.StringProperty() 以前是 y = db.IntegerProperty()。
此时我需要刷新所有数据库记录。我该怎么做?
是否有机会删除存储所有数据库记录的本地文件?
【问题讨论】:
-
当您执行 qObj = Person.all() 时,您将 qObj 设置为 Person 对象列表。据我所知,您不能在该列表上调用 delete - 您必须遍历列表并分别删除每个对象。
-
code.google.com/appengine/docs/python/datastore/… ... delete(models) 从数据存储中删除一个或多个模型实例。参数:models 模型实例、实体的 Key 或模型实例的列表(或其他可迭代)或要删除的实体的键。
-
我刚刚尝试了
db.delete( Person.all() ),使用您的确切Person模型,它完美地工作(从数据库中清除所有Person对象)