Dam*_*ian 29 google-app-engine google-cloud-datastore
好吧,我正在开发App Engine(Java),经过大量的尝试和部署,我需要重置数据存储区.我为测试性能添加了大量随机数据,除此之外,实体发生了很大变化,因此我需要删除所有:数据,表,索引.
我怎样才能做到这一点?
小智 30
很抱歉醒来这个帖子,但万一我想为像我这样的新手添加一个提示(最后在google文档中找到答案):
如果要一次性重置本地数据存储(例如在使用eclipse进行开发时),请关闭服务器,在项目中找到文件' local_db.bin '(应该在WEB-INF/appengine-generated /目录中) ),并删除它.
使用java工作正常,还没有尝试使用python.
++
Pet*_*ore 16
在SQL中没有与DROP TABLE或TRUNCATE TABLE等效的内置命令.您只需在应用中创建"删除所有内容"页面,然后通过脚本重复调用该页面.在该页面中,您希望删除尽可能多的实体,但仍然可以合理地期望在请求超时之前完成.确切的代码取决于您使用的是JDO/JPA还是低级API.(低级API会更快,因为您可以使用批处理操作.)
这之前的 SO问题是几乎相同的,只是为Python
只需执行一个没有过滤器的查询来获取所有实体,然后逐个删除它们.
import javax.servlet.http.*;
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
DatastoreService datastore =
DatastoreServiceFactory.getDatastoreService();
Query mydeleteq = new Query();
PreparedQuery pq = datastore.prepare(mydeleteq);
for (Entity result : pq.asIterable()) {
datastore.delete(result.getKey());
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20798 次 |
最近记录: |