在低级Java api中,我曾经能够在运行时组成实体名称。
在python中,似乎我必须预先定义一个也是我的实体名称的类名:
class SomeKindaData(db.Expando):
pass
sKD = SomeKindaData(key_name='1')
...
有没有办法在App Engine for Python中运行时创建实体名称?
答案 0 :(得分:3)
我对App Engine知之甚少,但您可以在运行时定义类,如下所示:
def get_my_class(name):
return type(name, (db.Expando,), {})
所以type有三个参数:
答案 1 :(得分:2)
实体本身没有名称。在数据存储区中,实体由密钥标识,密钥可以具有名称或ID。您在示例代码中将实体的密钥名称设置为“1”。实体也按种类分类,在本例中为SomeKindaData。
db.Model和db.Expando在数据存储区周围提供本地ORM抽象。使用这些时,默认情况下,您的实体的类名称将设置为您的模型类名称。如果您不想在创建实体之前定义模型类,则可以使用the low-level datastore API:
from google.appengine.api import datastore
sKD = datastore.Entity(kind='SomeKindaData', name='1')
sKD['SomeProperty'] = 'SomeValue'
datastore.Put(sKD)