def test_transaction(self): entity = datastore.Entity(key=datastore.Key('Company', 'Google')) entity['url'] = u'www.google.com' with datastore.Transaction() as xact: results = datastore.get([entity.key]) if len(results) == 0: xact.put(entity) self.case_entities_to_delete.append(entity) # This will always return after the transaction. retrieved_entity, = datastore.get([entity.key]) self.case_entities_to_delete.append(retrieved_entity) self.assertEqual(retrieved_entity, entity)
def test_transaction(self): entity = datastore.Entity(key=datastore.Key("Company", "Google")) entity["url"] = u"www.google.com" with datastore.Transaction() as xact: result = datastore.get(entity.key) if result is None: xact.put(entity) self.case_entities_to_delete.append(entity) # This will always return after the transaction. retrieved_entity = datastore.get(entity.key) self.case_entities_to_delete.append(retrieved_entity) self.assertEqual(retrieved_entity, entity)
def __get_keys(self, key_ids): keys = [KEY_CLASS(self._document._key_name, try_int(id), app=FIXED_APP_ID) for id in key_ids] if GAE_RUNNING: entities = ndb.get_multi(keys) else: entities = datastore.get(keys) return entities
def _get_report(employee_id, report_id, create=True): key = Key('Employee', employee_id, 'Expense Report', report_id) reports = datastore.get([key]) if len(reports) == 0: if not create: return None report = Entity(key) datastore.put([report]) else: report, = reports return report
def _get_employee(employee_id, create=True): key = Key('Employee', employee_id) employees = datastore.get([key]) if len(employees) == 0: if not create: return None employee = Entity(key) employee['created'] = employee['updated'] = datetime.datetime.utcnow() datastore.put([employee]) else: employee, = employees return employee
def _generic_test_post(self, name=None, key_id=None): entity = self._get_post(id_or_name=(name or key_id)) datastore.put([entity]) # Register entity to be deleted. self.case_entities_to_delete.append(entity) if name is not None: self.assertEqual(entity.key.name, name) if key_id is not None: self.assertEqual(entity.key.id, key_id) retrieved_entity, = datastore.get([entity.key]) # Check the given and retrieved are the the same. self.assertEqual(retrieved_entity, entity)
def test_save_multiple(self): with datastore.Transaction() as xact: entity1 = self._get_post() xact.put(entity1) # Register entity to be deleted. self.case_entities_to_delete.append(entity1) second_post_content = { 'title': u'How to make the perfect homemade pasta', 'tags': [u'pasta', u'homemade'], 'publishedAt': datetime.datetime(2001, 1, 1), 'author': u'Silvano', 'isDraft': False, 'wordCount': 450, 'rating': 4.5, } entity2 = self._get_post(post_content=second_post_content) xact.put(entity2) # Register entity to be deleted. self.case_entities_to_delete.append(entity2) keys = [entity1.key, entity2.key] matches = datastore.get(keys) self.assertEqual(len(matches), 2)
def _generic_test_post(self, name=None, key_id=None): entity = self._get_post(id_or_name=(name or key_id)) with datastore.Transaction(): datastore.put([entity]) # Register entity to be deleted. self.case_entities_to_delete.append(entity) if name is not None: self.assertEqual(entity.key.name, name) if key_id is not None: self.assertEqual(entity.key.id, key_id) retrieved_entity, = datastore.get([entity.key]) # Check the keys are the same. self.assertEqual(retrieved_entity.key.path, entity.key.path) self.assertEqual(retrieved_entity.key.namespace, entity.key.namespace) self.assertTrue( _compare_dataset_ids(retrieved_entity.key.dataset_id, entity.key.dataset_id)) # Check the data is the same. retrieved_dict = dict(retrieved_entity.items()) entity_dict = dict(entity.items()) self.assertEqual(retrieved_dict, entity_dict)
from gcloud.datastore import demo demo.initialize() # Let's import the package containing our helper classes: # Let's create a new entity of type "Thing" and name it 'Toy': key = datastore.Key('Thing') toy = datastore.Entity(key) toy.update({'name': 'Toy'}) # Now let's save it to our datastore: datastore.put(toy) # If we look it up by its key, we should find it... print(datastore.get(toy.key)) # And we should be able to delete it... datastore.delete(toy.key) # Since we deleted it, if we do another lookup it shouldn't be there again: print(datastore.get(toy.key)) # Now let's try a more advanced query. # First, let's create some entities. SAMPLE_DATA = [ (1234, 'Computer', 10), (2345, 'Computer', 8), (3456, 'Laptop', 10), (4567, 'Printer', 11), (5678, 'Printer', 12),
from gcloud.datastore import demo demo.initialize() # Let's import the package containing our helper classes: # Let's create a new entity of type "Thing" and name it 'Toy': key = datastore.Key('Thing') toy = datastore.Entity(key) toy.update({'name': 'Toy'}) # Now let's save it to our datastore: datastore.put([toy]) # If we look it up by its key, we should find it... print(datastore.get([toy.key])) # And we should be able to delete it... datastore.delete([toy.key]) # Since we deleted it, if we do another lookup it shouldn't be there again: print(datastore.get([toy.key])) # Now let's try a more advanced query. # First, let's create some entities. SAMPLE_DATA = [(1234, 'Computer', 10), (2345, 'Computer', 8), (3456, 'Laptop', 10), (4567, 'Printer', 11), (5678, 'Printer', 12), (6789, 'Computer', 13)] sample_keys = [] for id, name, age in SAMPLE_DATA: key = datastore.Key('Thing', id)
from gcloud.datastore import demo demo.initialize() # Let's import the package containing our helper classes: # Let's create a new entity of type "Thing" and name it 'Toy': key = datastore.Key('Thing') toy = datastore.Entity(key) toy.update({'name': 'Toy'}) # Now let's save it to our datastore: datastore.put([toy]) # If we look it up by its key, we should find it... print(datastore.get([toy.key])) # And we should be able to delete it... datastore.delete([toy.key]) # Since we deleted it, if we do another lookup it shouldn't be there again: print(datastore.get([toy.key])) # Now let's try a more advanced query. # First, let's create some entities. SAMPLE_DATA = [ (1234, 'Computer', 10), (2345, 'Computer', 8), (3456, 'Laptop', 10), (4567, 'Printer', 11), (5678, 'Printer', 12),
def uncast(self, value, follow_references=True): if value and follow_references: values = datastore.get([value]) if len(values) > 0: return _wrap_document(values[0]) return value
from gcloud.datastore import demo demo.initialize() # Let's import the package containing our helper classes: # Let's create a new entity of type "Thing" and name it 'Toy': key = datastore.Key('Thing') toy = datastore.Entity(key) toy.update({'name': 'Toy'}) # Now let's save it to our datastore: datastore.put(toy) # If we look it up by its key, we should find it... print(datastore.get(toy.key)) # And we should be able to delete it... datastore.delete(toy.key) # Since we deleted it, if we do another lookup it shouldn't be there again: print(datastore.get(toy.key)) # Now let's try a more advanced query. # First, let's create some entities. SAMPLE_DATA = [(1234, 'Computer', 10), (2345, 'Computer', 8), (3456, 'Laptop', 10), (4567, 'Printer', 11), (5678, 'Printer', 12), (6789, 'Computer', 13)] sample_keys = [] for id, name, age in SAMPLE_DATA: key = datastore.Key('Thing', id)