def get_values(self, doctype, filters=None, fieldname="name", ignore=None, as_dict=False,
		debug=False, order_by=None, update=None, cache=False):
		out = None
		if cache and isinstance(filters, basestring) and \
			(doctype, filters, fieldname) in self.value_cache:
			return self.value_cache[(doctype, filters, fieldname)]

		if isinstance(filters, list):
			out = self._get_value_for_many_names(doctype, filters, fieldname, debug=debug)

		else:
			fields = fieldname
			if fieldname!="*":
				if isinstance(fieldname, basestring):
					fields = [fieldname]
				else:
					fields = fieldname

			if (filters is not None) and (filters!=doctype or doctype=="DocType"):
				try:
					out = self._get_values_from_table(fields, filters, doctype, as_dict, debug, order_by, update)
				except Exception, e:
					if ignore and e.args[0] in (1146, 1054):
						# table or column not found, return None
						out = None
					elif (not ignore) and e.args[0]==1146:
						# table not found, look in singles
						out = self.get_values_from_single(fields, filters, doctype, as_dict, debug, update)
					else:
						raise
			else:
				out = self.get_values_from_single(fields, filters, doctype, as_dict, debug, update)

		if cache and isinstance(filters, basestring):
			self.value_cache[(doctype, filters, fieldname)] = out

		return out
Returns multiple document properties.
dataset/ETHPy150Open frappe/frappe/frappe/database.py/Database.get_values