0

OS Win7,GAE 1.7.6,Python 2.7.3,还在学习GAE..

处理项目,需要输入表单来扩展其内容(姓名、电子邮件、电话..),并在数据存储中定义键名,最好以定义方式增加。在我总是让数据存储区自动生成 id 之前,我从未使用过 Key Name。

使用 appcfg.py 工具填充数据存储区以从 CSV 文件导入数据。

当我添加新内容时。链接:http ://s17.postimg.org/6pfqjv6gv/Unffaftitled.png

在 Datastore 中定义键名的一些基本示例是什么?

4

4 回答 4

3

这是你要找的吗?

class Employee(db.Model):
  first_name = db.StringProperty()
  last_name = db.StringProperty()

employee = Employee(key_name='asalieri',
                    first_name='Antonio',
                    last_name='Salieri')

employee.put()

这将创建一个具有键 name 的实体asalieri。然后,您可以使用 检索此实体Employee.get_by_key_name ('asalieri')

这是此处文档中的示例代码:https ://developers.google.com/appengine/docs/python/datastore/entities#Creating_an_Entity

希望有帮助!

于 2013-04-07T17:40:02.713 回答
1

根据官方文档,您可以将__key__伪属性映射到 bulkloader .yaml 配置文件中相应的 CSV 列,例如:

transformers:
- kind: MyKind
  ...
  property_map:
  - property: __key__
    external_name: MyKeyColumn
    ...

(如果您希望数据存储区像以前一样自动为您生成密钥 ID,那么您必须将其property从 .yaml 文件中删除。)

于 2013-04-08T07:26:41.027 回答
1

快速建议

在项目上工作,需要有输入表单来扩展其内容(姓名、电子邮件、电话..),并在数据存储中使用定义的键名,最好以定义方式增加

我花了一两分钟试图理解你在说什么。

不要不加思索地急于输入你想问的内容。
如果您想从其他人那里得到深思熟虑的答案,请尝试清楚地提出问题。

我对你的问题

为什么你认为你需要手动定义键名?
你认为你得到了什么好处?

根据我的推断,您似乎不了解 GAE HRD 数据存储的基础知识。
如果您不了解 HRD 数据存储,则无法在 GAE 上有效编码。

我的答案

你的问题没有简短的答案。
我只能建议您花几个小时观看和阅读以下内容。
然后,您可以做出更好的设计决策。

  1. 观看使用 App Engine 构建可扩展的 Web 应用程序 - Google IO 2008,尤其是从第 28 分钟开始。我会建议观看整件事。
  2. 观看App Engine Datastore Under the Covers - Google IO 2008
  3. 阅读编写可扩展应用程序的最佳实践
  4. Mastering the datastore中,我发现建模实体关系部分也非常有用。
  5. 这是另一个非常有用的 Stackoverflow 问答——如何在数据存储而不是数据库中思考
于 2013-04-09T06:54:55.447 回答
0

ndb 示例(查找 'id' insted 'key_name'):

employee = Employee(id='asalieri',
                    first_name='Antonio',
                    last_name='Salieri')
于 2014-09-16T02:01:02.250 回答