对于Google App Engine的Java实现,似乎没有相应的Python App Engine的_ah / admin。
我是否可以手动浏览数据存储区?我的机器上的文件在哪里? (我在OS X上使用Eclipse的App Engine插件)。
答案 0 :(得分:111)
http://googleappengine.blogspot.com/2009/07/google-app-engine-for-java-sdk-122.html:“最后,开发者应用服务器有一个数据查看器。在本地启动您的应用并将浏览器指向 http://localhost:8888/_ah/admin
http://localhost:8000/datastore
*检查一下。“
*自 1.7.7
答案 1 :(得分:40)
目前没有Java SDK的数据存储区查看器 - 应该会在下一个SDK版本中出现。与此同时,您最好的办法是用数据存储区查看代码编写自己的管理界面 - 或者等待下一个SDK发布。
Java App Engine现在有一个本地数据存储区查看器,可在http://localhost:8080/_ah/admin
访问。
答案 2 :(得分:6)
我在Windows + Eclipse环境中的\ war \ WEB-INF \ appengine-generated \ local_db.bin
上有本地数据存储区据我所知,它使用名为“协议缓冲区”的内部格式。我没有外部工具以人类可读的格式呈现文件。
我正在使用这样简单的“查看器”代码:
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException
{
resp.setContentType("text/plain");
final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
final Query query = new Query("Table/Entity Name");
//query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.DESCENDING);
for (final Entity entity : datastore.prepare(query).asIterable()) {
resp.getWriter().println(entity.getKey().toString());
final Map<String, Object> properties = entity.getProperties();
final String[] propertyNames = properties.keySet().toArray(
new String[properties.size()]);
for(final String propertyName : propertyNames) {
resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName));
}
}
}
答案 3 :(得分:2)
在最新版本的SDK( 1.7.6 + )中,开发服务器的管理部分随附了它改变了位置
分析服务器输出日志,我们可以看到它可以在以下位置访问:
http://localhost:8000
数据存储区查看器:
http://localhost:8000/datastore
看起来非常整洁 - 根据谷歌的新设计指南。
答案 4 :(得分:1)
由于Google App Engines数据存储区查看器不支持显示引用实体的集合,因此我修改了Paul的版本以显示所有后代实体:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String entityParam = req.getParameter("e");
resp.setContentType("text/plain");
final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
// Original query
final Query queryOrig = new Query(entityParam);
queryOrig.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING);
for (final Entity entityOrig : datastore.prepare(queryOrig).asIterable()) {
// Query for this entity and all its descendant entities and collections
final Query query = new Query();
query.setAncestor(entityOrig.getKey());
query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING);
for (final Entity entity : datastore.prepare(query).asIterable()) {
resp.getWriter().println(entity.getKey().toString());
// Print properties
final Map<String, Object> properties = entity.getProperties();
final String[] propertyNames = properties.keySet().toArray(new String[properties.size()]);
for(final String propertyName : propertyNames) {
resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName));
}
}
}
}
应该注意的是,空集合/引用实体没有显示任何内容。
答案 5 :(得分:1)
使用文本编辑器打开\war\WEB-INF\appengine-generated\local_db.bin
文件,例如Notepad ++。
数据是乱码的,但至少你可以阅读它,你可以复制以提取它。
答案 6 :(得分:0)
对我来说,解决方法是使用以下gcloud
命令登录
gcloud auth application-default login