@classmethod
def insert(cls, c, **kwargs):
    """Inserts an element to the table."""
    verified = {}
    for column in cls.columns:
        try:
            value = kwargs[column.name]
        except KeyError:
            continue
        check = column.column_type.python
        if value is None and not column.nullable:
            raise TypeError(
                f'Cannot pass None to non-nullable column {column.name}.')
        elif (not check or not isinstance(value, check)) and value is not None:
            fmt = (
                'column {0.name} expected {1.__name__}, received {2.__class__.__name__}'
                )
            raise TypeError(fmt.format(column, check, value))
        verified[column.name] = value
    sql = 'INSERT INTO {0} ({1}) VALUES ({2});'.format(cls.__tablename__,
        ', '.join(verified), ', '.join('?' for _ in verified))
    c.execute(sql, tuple(verified.values()))
