@staticmethod
def _infer_type(o):
    """
        Tries to infer the SQL equivalent data type.
        Raises a TypeError if no equivalent type is found

        :param o: The object from which the type will be inferred
        :returns: A string with the equivalent SQL type
        :raises: TypeError
        """
    if isinstance(o, bool):
        return 'BOOLEAN'
    elif isinstance(o, int):
        return 'INTEGER'
    elif isinstance(o, float):
        return 'FLOAT'
    elif isinstance(o, str):
        return 'VARCHAR({})'.format(len(o))
    else:
        raise TypeError('Type {} has not SQL equivalent'.format(type(o)))
