如何在Datastore GAE Python中定义密钥名称?

时间:2013-04-07 12:31:04

标签: google-app-engine web-applications python-2.7 google-cloud-datastore app-engine-ndb

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

处理项目,需要输入表单以扩展其内容(名称,电子邮件,电话......)以及数据存储区中定义的密钥名称,最好以定义方式增加。在我始终自动生成数据存储区之前,我从未使用过密钥名称。

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

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

在数据存储区中定义密钥名称的基本示例是什么?

4 个答案:

答案 0 :(得分: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()

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

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

希望有所帮助!

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

快速建议

  

处理项目,需要输入表单来扩展它   数据存储区中已定义的密钥名称的内容(名称,电子邮件,电话..),   最好以定义方式增加

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

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

我对你的问题

为什么您认为需要手动定义密钥名称 ? 你认为你会得到什么好处?

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

我的回答

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

  1. 特别是从28分钟开始观看Building Scalable Web Apps with App Engine - Google IO 2008。我建议看整件事。
  2. 观看App Engine Datastore Under the Covers - Google IO 2008
  3. 阅读Best Practices for writing scalable applications
  4. Mastering the datastore开始,我发现Modeling Entity Relationships部分非常有用。
  5. 这是另一个非常有用的Stackoverflow Q& A - How to think in datastore instead of Database

答案 3 :(得分:0)

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

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