Ejemplo n.º 1
0
	def test_db_results_to_dict(self):
		# arrange
		raw = ["hi", "0", "0.5"]
		columns = [
			{
				'column_name'			:			"test_text",
				'datatype'				:			'TEXT',
			},
			{
				'column_name' 		: 		"test_int",
				'datatype' 				: 		'INTEGER',
			},		
			{		
				'column_name' 		:	 		"test_float",
				'datatype' 				: 		'REAL',
			}	
		]
		
		# act
		out = Utils.db_results_to_dict(columns, raw)
		
		# assert
		keys = out.keys()
		
		for column in columns:
			self.assertTrue(column['column_name'] in keys)
			
		self.assertTrue(type(out['test_text']) is str)
		self.assertTrue(type(out['test_int']) is int)
		self.assertTrue(type(out['test_float']) is float)
		
Ejemplo n.º 2
0
	def get_character(self, id = -1):
		"""Get from the database all columns for the given character id.

		Returns a dictionary where keys are the column names.
		Returns False if there is an error, or if the number of fields returned is
		not equal to the number of columns in the table.
		Returns None if character not found.
		"""
		if id <= 0: 
			return False
			
		columns = self.schema['columns']
			
		# TODO(gus): why does sqlite3 throw an error when table name is a placeholder?
		query = "SELECT " + ','.join(self.column_names) \
			+ " FROM " + self.schema['name'] \
			+ " WHERE " + self.ID_COLUMN_KEY + "=?" \
			+ " LIMIT 1"
		success, unused, unused, entries = self._db.query(query, (id,))
		
		# These checks should be done in this order.
		if not success:
			return False
		if len(entries) == 0:
			return None
		if len(entries[0]) is not len(columns):
			return False
		else:
			return Utils.db_results_to_dict(columns, entries[0])