实体的 属性 可以是 Google Cloud Datastore 中的另一个实体吗?
Can the property of an entity be another entity in Google Cloud Datastore?
这是文档中的内容:
Datastore mode supports a variety of data types for property values.
These include, among others:
Integers
Floating-point
numbers
Strings
Dates
Binary data
是否可以将不同类型的实体分配为 Google 云数据存储中另一个实体的 属性?
所以您想将一个实体嵌套在另一个实体中?
python ORM ndb
有一个叫做 属性 类型的东西 ndb.StructuredProperty()
https://cloud.google.com/appengine/docs/standard/python/ndb/entity-property-reference#structured
class Address(ndb.Model):
type = ndb.StringProperty() # E.g., 'home', 'work'
street = ndb.StringProperty()
city = ndb.StringProperty()
class Contact(ndb.Model):
name = ndb.StringProperty()
addresses = ndb.StructuredProperty(Address, repeated=True)
guido = Contact(
name='Guido',
addresses=[
Address(
type='home',
city='Amsterdam'),
Address(
type='work',
street='Spear St',
city='SF')])
但这只是 ORM 所做的把戏。它实际上被存储为:
name = 'Guido'
addresses.type = ['home', 'work']
addresses.city = ['Amsterdam', 'SF']
addresses.street = [None, 'Spear St']
数组是重复实体的存储方式:
https://cloud.google.com/appengine/docs/standard/python/ndb/entity-property-reference#repeated
编辑:
所以我刚刚从你的另一个问题中注意到你正在使用 Python3,它使用了这个库 https://googleapis.github.io/google-cloud-python/latest/datastore/index.html
不幸的是,该库 feature-ful 比 ndb
少得多。他们正在努力将 ndb
移植到 python3,但它仍处于 alpha https://github.com/googleapis/python-ndb
但是您仍然可以尝试用 ndb
的方式保存它
from google.cloud import datastore
client = datastore.Client()
key = client.key('Contact', 1234)
entity = datastore.Entity(key=key)
entity.update({
'name': Guido',
'addresses.type': ['home', 'work'],
'addresses.city' = ['Amsterdam', 'SF']
'addresses.street' = [None, 'Spear St']
})
我唯一不确定的工作是发送重复属性的数组
这是文档中的内容:
Datastore mode supports a variety of data types for property values. These include, among others:
Integers
Floating-point
numbers
Strings
Dates
Binary data
是否可以将不同类型的实体分配为 Google 云数据存储中另一个实体的 属性?
所以您想将一个实体嵌套在另一个实体中?
python ORM ndb
有一个叫做 属性 类型的东西 ndb.StructuredProperty()
https://cloud.google.com/appengine/docs/standard/python/ndb/entity-property-reference#structured
class Address(ndb.Model):
type = ndb.StringProperty() # E.g., 'home', 'work'
street = ndb.StringProperty()
city = ndb.StringProperty()
class Contact(ndb.Model):
name = ndb.StringProperty()
addresses = ndb.StructuredProperty(Address, repeated=True)
guido = Contact(
name='Guido',
addresses=[
Address(
type='home',
city='Amsterdam'),
Address(
type='work',
street='Spear St',
city='SF')])
但这只是 ORM 所做的把戏。它实际上被存储为:
name = 'Guido'
addresses.type = ['home', 'work']
addresses.city = ['Amsterdam', 'SF']
addresses.street = [None, 'Spear St']
数组是重复实体的存储方式: https://cloud.google.com/appengine/docs/standard/python/ndb/entity-property-reference#repeated
编辑:
所以我刚刚从你的另一个问题中注意到你正在使用 Python3,它使用了这个库 https://googleapis.github.io/google-cloud-python/latest/datastore/index.html
不幸的是,该库 feature-ful 比 ndb
少得多。他们正在努力将 ndb
移植到 python3,但它仍处于 alpha https://github.com/googleapis/python-ndb
但是您仍然可以尝试用 ndb
的方式保存它
from google.cloud import datastore
client = datastore.Client()
key = client.key('Contact', 1234)
entity = datastore.Entity(key=key)
entity.update({
'name': Guido',
'addresses.type': ['home', 'work'],
'addresses.city' = ['Amsterdam', 'SF']
'addresses.street' = [None, 'Spear St']
})
我唯一不确定的工作是发送重复属性的数组