<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def insert(self, _values=None, **values):
 """ Insert a new record into the database :param _values: The new record values :type _values: dict or list :param values: The new record values as keyword arguments :type values: dict :return: The result :rtype: bool """

        if not values and not _values:
            return True

        if not isinstance(_values, list):
            if _values is not None:
                values.update(_values)

            values = [values]
        else:
            values = _values
            for i, value in enumerate(values):
                values[i] = OrderedDict(sorted(value.items()))

        bindings = []

        for record in values:
            for value in record.values():
                bindings.append(value)

        sql = self._grammar.compile_insert(self, values)

        bindings = self._clean_bindings(bindings)

        return self._connection.insert(sql, bindings)