'Deletes a UNIQUE constraint on precisely the columns on the given table.'

@invalidate_table_constraints
def delete_unique(self, table_name, columns):

    if (not isinstance(columns, (list, tuple))):
        columns = [columns]
    if self.dry_run:
        if self.debug:
            print('            -    no    dry    run    output    for    delete_unique_column()    due    to    dynamic    DDL,    sorry')
        return
    constraints = list(self._constraints_affecting_columns(table_name, columns))
    if (not constraints):
        raise ValueError(('Cannot    find    a    UNIQUE    constraint    on    table    %s,    columns    %r' % (table_name, columns)))
    for constraint in constraints:
        self.execute((self.delete_unique_sql % (self.quote_name(table_name), self.quote_name(constraint))))
