def checkDB(self,gitkit_user): req = datastore.BeginTransactionRequest() resp = datastore.begin_transaction(req) tx = resp.transaction req = datastore.LookupRequest() key = datastore.Key() path = key.path_element.add() path.kind = 'PSUsers' path.name = gitkit_user.user_id req.key.extend([key]) req.read_options.transaction = tx resp = datastore.lookup(req) req = datastore.CommitRequest() req.transaction = tx if resp.missing: user = req.mutation.insert.add() user.key.CopyFrom(key) userid_property = user.property.add() userid_property.name = 'userid' userid_property.value.string_value = gitkit_user.user_id display_name_property = user.property.add() display_name_property.name = 'display_name' display_name_property.value.string_value = gitkit_user.name photo_url_property = user.property.add() photo_url_property.name = 'photo_url' if gitkit_user.photo_url: photo_url_property.value.string_value = gitkit_user.photo_url else: photo_url_property.value.string_value = "/images/home/slider/slide1/cloud1.png" email_property = user.property.add() email_property.name = 'email' email_property.value.string_value = gitkit_user.email last_login_property = user.property.add() last_login_property.name = 'last_login' last_login_property.value.timestamp_microseconds_value = long(time.time() * 1e6) elif resp.found: user = resp.found[0].entity last_login_property = datastore.Property() last_login_property.name = 'last_login' for prop in user.property: if prop.name == 'last_login': prop.value.timestamp_microseconds_value = long(time.time() * 1e6) req.mutation.update.extend([user]) resp = datastore.commit(req) return None
def archive(cls): """Delete all Todo items that are done.""" req = datastore.BeginTransactionRequest() resp = datastore.begin_transaction(req) tx = resp.transaction req = datastore.RunQueryRequest() req.read_options.transaction = tx q = req.query set_kind(q, kind='Todo') add_projection(q, '__key__') set_composite_filter(q.filter, datastore.CompositeFilter.AND, set_property_filter( datastore.Filter(), 'done', datastore.PropertyFilter.EQUAL, True), set_property_filter( datastore.Filter(), '__key__', datastore.PropertyFilter.HAS_ANCESTOR, default_todo_list.key)) resp = datastore.run_query(req) keys = [r.entity.key for r in resp.batch.entity_result] req = datastore.CommitRequest() req.transaction = tx req.mutation.delete.extend(keys) resp = datastore.commit(req) return ''
def archive(cls): """Delete all Todo items that are done.""" req = datastore.BeginTransactionRequest() resp = datastore.begin_transaction(req) tx = resp.transaction req = datastore.RunQueryRequest() req.read_options.transaction = tx q = req.query set_kind(q, kind='Todo') add_projection(q, '__key__') set_composite_filter( q.filter, datastore.CompositeFilter.AND, set_property_filter(datastore.Filter(), 'done', datastore.PropertyFilter.EQUAL, True), set_property_filter(datastore.Filter(), '__key__', datastore.PropertyFilter.HAS_ANCESTOR, default_todo_list.key)) resp = datastore.run_query(req) keys = [r.entity.key for r in resp.batch.entity_result] req = datastore.CommitRequest() req.transaction = tx req.mutation.delete.extend(keys) resp = datastore.commit(req) return ''
def save(self): """ Saves an entity to the datastore. """ _log.debug('Saving %s entity with id %s.', type(self).__name__, self._get_id()) req = googledatastore.BeginTransactionRequest() resp = googledatastore.begin_transaction(req) tx = resp.transaction self.modified_time = datetime.utcnow() resp = self.__lookup(tx) if not resp.found: self.created_time = self.modified_time self.__upsert(tx)
def save_batch(entities): req = googledatastore.BeginTransactionRequest() resp = googledatastore.begin_transaction(req) transaction = resp.transaction # Bulk lookup req = googledatastore.LookupRequest() req.key.extend([entity.__get_key() for entity in entities]) req.read_options.transaction = transaction resp = googledatastore.lookup(req) # Update created / modified times. missing = set() for result in resp.missing: key = result.entity.key.path_element[0] missing.add(key.id or key.name) for entity in entities: entity.modified_time = time if entity._get_id() in missing: entity.created_time = time # Bulk upsert req = googledatastore.CommitRequest() req.transaction = transaction req.mutation.upsert.extend([entity._get_entity() for entity in entities]) googledatastore.commit(req)
def save_batch(entities): req = googledatastore.BeginTransactionRequest() resp = googledatastore.begin_transaction(req) transaction = resp.transaction # Bulk lookup req = googledatastore.LookupRequest() req.key.extend([entity.__get_key() for entity in entities]) req.read_options.transaction = transaction resp = googledatastore.lookup(req) # Update created / modified times. missing = set() for result in resp.missing: key = result.entity.key.path_element[0] missing.add(key.id or key.name) for entity in entities: entity.modified_time = time if entity._get_id() in missing: entity.created_time = time # Bulk upsert req = googledatastore.CommitRequest() req.transaction = transaction req.mutation.upsert.extend( [entity._get_entity() for entity in entities]) googledatastore.commit(req)
def checkDB(self, gitkit_user): req = datastore.BeginTransactionRequest() resp = datastore.begin_transaction(req) tx = resp.transaction req = datastore.LookupRequest() key = datastore.Key() path = key.path_element.add() path.kind = 'PSUsers' path.name = gitkit_user.user_id req.key.extend([key]) req.read_options.transaction = tx resp = datastore.lookup(req) req = datastore.CommitRequest() req.transaction = tx if resp.missing: user = req.mutation.insert.add() user.key.CopyFrom(key) userid_property = user.property.add() userid_property.name = 'userid' userid_property.value.string_value = gitkit_user.user_id display_name_property = user.property.add() display_name_property.name = 'display_name' display_name_property.value.string_value = gitkit_user.name photo_url_property = user.property.add() photo_url_property.name = 'photo_url' if gitkit_user.photo_url: photo_url_property.value.string_value = gitkit_user.photo_url else: photo_url_property.value.string_value = "/images/home/slider/slide1/cloud1.png" email_property = user.property.add() email_property.name = 'email' email_property.value.string_value = gitkit_user.email last_login_property = user.property.add() last_login_property.name = 'last_login' last_login_property.value.timestamp_microseconds_value = long( time.time() * 1e6) elif resp.found: user = resp.found[0].entity last_login_property = datastore.Property() last_login_property.name = 'last_login' for prop in user.property: if prop.name == 'last_login': prop.value.timestamp_microseconds_value = long( time.time() * 1e6) req.mutation.update.extend([user]) resp = datastore.commit(req) return None
def main(): # Set project id from command line argument. if len(sys.argv) < 2: print 'Usage: adams.py <PROJECT_ID>' sys.exit(1) # Set the project from the command line parameters. datastore.set_options(project_id=sys.argv[1]) try: # Create a RPC request to begin a new transaction. req = datastore.BeginTransactionRequest() # Execute the RPC synchronously. resp = datastore.begin_transaction(req) # Get the transaction handle from the response. tx = resp.transaction # Create a RPC request to get entities by key. req = datastore.LookupRequest() # Create a new entity key. key = datastore.Key() # Set the entity key with only one `path` element: no parent. elem = key.path.add() elem.kind = 'Trivia' elem.name = 'hgtg' # Add one key to the lookup request. req.keys.extend([key]) # Set the transaction, so we get a consistent snapshot of the # entity at the time the transaction started. req.read_options.transaction = tx # Execute the RPC and get the response. resp = datastore.lookup(req) # Create a RPC request to commit the transaction. req = datastore.CommitRequest() # Set the transaction to commit. req.transaction = tx if resp.found: # Get the entity from the response if found. entity = resp.found[0].entity else: # If no entity was found, insert a new one in the commit request mutation. entity = req.mutations.add().insert # Copy the entity key. entity.key.CopyFrom(key) # Add two entity properties: # - a utf-8 string: `question` entity.properties['question'].string_value ='Meaning of life?' # - a 64bit integer: `answer` prop = entity.properties['answer'].integer_value = 42 # Execute the Commit RPC synchronously and ignore the response: # Apply the insert mutation if the entity was not found and close # the transaction. datastore.commit(req) # Get question property value. question = entity.properties['question'].string_value # Get answer property value. answer = entity.properties['answer'].integer_value # Print the question and read one line from stdin. print question result = raw_input('> ') if result == str(answer): print ('fascinating, extraordinary and, ' 'when you think hard about it, completely obvious.') else: print "Don't Panic!" except datastore.RPCError as e: # RPCError is raised if any error happened during a RPC. # It includes the `method` called, the canonical error code `code`, # and the `message` of the failure. logging.error('Error while doing datastore operation') logging.error('RPCError: %(method)s %(reason)s', {'method': e.method, 'code': e.code, 'reason': e.message}) return
def __enter__(self): """Start transction.""" req = datastore.BeginTransactionRequest() resp = datastore.begin_transaction(req) self.tx = resp.transaction return self
def main(): datastore.set_options(dataset='glowing-thunder-842') try: # Create a RPC request to begin a new transaction. req = datastore.BeginTransactionRequest() # Execute the RPC synchronously. resp = datastore.begin_transaction(req) # Get the transaction handle from the response. tx = resp.transaction # Create a RPC request to get entities by key. req = datastore.LookupRequest() # Create a new entity key. key = datastore.Key() # Set the entity key with only one `path_element`: no parent. path = key.path_element.add() path.kind = 'kindlooptest' path.name = randstr() # Add one key to the lookup request. req.key.extend([key]) # Set the transaction, so we get a consistent snapshot of the # entity at the time the transaction started. req.read_options.transaction = tx # Execute the RPC and get the response. resp = datastore.lookup(req) # Create a RPC request to commit the transaction. req = datastore.CommitRequest() # Set the transaction to commit. req.transaction = tx if resp.found: # Get the entity from the response if found. entity = resp.found[0].entity else: # If no entity was found, insert a new one in the commit request mutation. entity = req.mutation.insert.add() # Copy the entity key. entity.key.CopyFrom(key) # Add two entity properties: # - a utf-8 string: `question` prop = entity.property.add() prop.name = 'prop1test' prop.value.string_value = randstr() # - a 64bit integer: `answer` prop = entity.property.add() prop.name = 'prop2test' prop.value.integer_value = 77 # Execute the Commit RPC synchronously and ignore the response: # Apply the insert mutation if the entity was not found and close # the transaction. datastore.commit(req) # Get question property value. question = entity.property[0].value.string_value # Get answer property value. answer = entity.property[1].value.integer_value # Print the question and read one line from stdin. print answer except datastore.RPCError as e: # RPCError is raised if any error happened during a RPC. # It includes the `method` called and the `reason` of the # failure as well as the original `HTTPResponse` object. logging.error('Error while doing datastore operation') logging.error('RPCError: %(method)s %(reason)s', {'method': e.method, 'reason': e.reason}) logging.error('HTTPError: %(status)s %(reason)s', {'status': e.response.status, 'reason': e.response.reason}) return
def main(): # Set dataset id from command line argument. if len(sys.argv) < 2: print 'Usage: adams.py <DATASET_ID>' sys.exit(1) # Set the dataset from the command line parameters. datastore.set_options(dataset=sys.argv[1]) try: # Create a RPC request to begin a new transaction. req = datastore.BeginTransactionRequest() # Execute the RPC synchronously. resp = datastore.begin_transaction(req) # Get the transaction handle from the response. tx = resp.transaction # Create a RPC request to get entities by key. req = datastore.LookupRequest() # Create a new entity key. key = datastore.Key() # Set the entity key with only one `path_element`: no parent. path = key.path_element.add() path.kind = 'Trivia' path.name = 'hgtg' # Add one key to the lookup request. req.key.extend([key]) # Set the transaction, so we get a consistent snapshot of the # entity at the time the transaction started. req.read_options.transaction = tx # Execute the RPC and get the response. resp = datastore.lookup(req) # Create a RPC request to commit the transaction. req = datastore.CommitRequest() # Set the transaction to commit. req.transaction = tx if resp.found: # Get the entity from the response if found. entity = resp.found[0].entity else: # If no entity was found, insert a new one in the commit request mutation. entity = req.mutation.insert.add() # Copy the entity key. entity.key.CopyFrom(key) # Add two entity properties: # - a utf-8 string: `question` prop = entity.property.add() prop.name = 'question' prop.value.string_value = 'Meaning of life?' # - a 64bit integer: `answer` prop = entity.property.add() prop.name = 'answer' prop.value.integer_value = 42 # Execute the Commit RPC synchronously and ignore the response: # Apply the insert mutation if the entity was not found and close # the transaction. datastore.commit(req) props = get_property_dict(entity) # Get question property value. question = props['question'].string_value # Get answer property value. answer = props['answer'].integer_value # Print the question and read one line from stdin. print question result = raw_input('> ') if result == str(answer): print ('fascinating, extraordinary and, ' 'when you think hard about it, completely obvious.') else: print "Don't Panic!" except datastore.RPCError as e: # RPCError is raised if any error happened during a RPC. # It includes the `method` called and the `reason` of the # failure as well as the original `HTTPResponse` object. logging.error('Error while doing datastore operation') logging.error('RPCError: %(method)s %(reason)s', {'method': e.method, 'reason': e.reason}) logging.error('HTTPError: %(status)s %(reason)s', {'status': e.response.status, 'reason': e.response.reason}) return
import googledatastore as datastore datastore.set_options(dataset='glowing-thunder-842') req = datastore.BeginTransactionRequest() datastore.begin_transaction(req)