def create(self, name, schema_or_table_or_query, *name_changes):
        "Creates either a table or view for use in the database."
        assert not self.__data.where(ROW.name == name), \
               'Name is already used and may not be overloaded!'
        if isinstance(schema_or_table_or_query, (tuple, list)):
            assert not name_changes, 'Name changes not allowed with schema!'
            data = Table(*schema_or_table_or_query)
        elif isinstance(schema_or_table_or_query, Table):
            assert not name_changes, 'Name changes not allowed with table!'
            data = schema_or_table_or_query
        else:
            data = _View(self, schema_or_table_or_query, *name_changes)
        self.__data.insert(name=name, type=type(data), data=data)
        return data
Creates either a table or view for use in the database.
recipes/Python/577825_Rudimentary_Database_Engine/recipe-577825.py