Data Namespaces with Google Cloud Datastore
Sun, 30 October 2016
test_model.py
from google.appengine.ext import ndb
from lib.model.abstract.abstract_model import AbstractModel
class TestModel(AbstractModel):
modifiedDate = ndb.DateTimeProperty(indexed=False, auto_now=True, name='md') # type: datetime.datetime
name = ndb.StringProperty(indexed=True)
def as_public(self):
"""
:rtype: dict
"""
return {
u"id": self.get_id(),
u"name": self.name
}
abstract_model.py
from google.appengine.ext import ndb
class AbstractModel(ndb.Model):
def get_id(self):
"""
:rtype: int
"""
return self.key.id()
create_data.py
from lib.model.test_model import TestModel a = TestModel() a.name = "default" a.put() a = TestModel(namespace="foo_one") a.name = "one" a.put() a = TestModel(namespace="foo_two") a.name = "two" a.put()
get_data.py
from lib.model.test_model import TestModel
data = []
data.append(
TestModel.query(TestModel.name == "default").fetch(1)[0].as_public()
)
data.append(
TestModel.query(TestModel.name == "one", namespace="foo_one").fetch(1)[0].as_public()
)
data.append(
TestModel.query(TestModel.name == "two", namespace="foo_two").fetch(1)[0].as_public()
)
# [
# {
# "id": 5629499534213120,
# "name": "default"
# },
# {
# "id": 5629499534213120,
# "name": "one"
# },
# {
# "id": 5629499534213120,
# "name": "two"
# }
# ]
# ... OR ...
data = []
data.append(
TestModel.get_by_id(5629499534213120).as_public()
)
data.append(
TestModel.get_by_id(5629499534213120, namespace="foo_one").as_public()
)
data.append(
TestModel.get_by_id(5629499534213120, namespace="foo_two").as_public()
)
# [
# {
# "id": 5629499534213120,
# "name": "default"
# },
# {
# "id": 5629499534213120,
# "name": "one"
# },
# {
# "id": 5629499534213120,
# "name": "two"
# }
# ]
# ... OR ...
from google.appengine.ext import ndb
data = []
data.append(
ndb.Key('TestModel', 5629499534213120).get().as_public()
)
data.append(
ndb.Key('TestModel', 5629499534213120, namespace='foo_one').get().as_public()
)
data.append(
ndb.Key('TestModel', 5629499534213120, namespace='foo_two').get().as_public()
)
# [
# {
# "id": 5629499534213120,
# "name": "default"
# },
# {
# "id": 5629499534213120,
# "name": "one"
# },
# {
# "id": 5629499534213120,
# "name": "two"
# }
# ]