При обновлении в Django существующей записи не получается перехватить Exception:

        from django.db.utils import IntegrityError
        try:
            source = Source()
            ....
            source.save()
        except IntegrityError as e:
            print('Дубликат уникального ключа %s' % str(e))
        except Exception as e:
            print(str(e))

Возникает ошибка:

_mysql_connector.MySQLInterfaceError: Duplicate entry '' for key ''
mysql.connector.errors.IntegrityError: 1062 (23000): Duplicate entry '' for key ''
django.db.utils.IntegrityError: Duplicate entry '' for key ''
 
AttributeError: 'NoneType' object has no attribute 'strip'

Решение:

Добавляем в OPTIONS ‘use_pure’:True чтобы исправить ошибку:

DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': '<set>',
        'USER': '<set>',
        'PASSWORD': '<set>',
        'OPTIONS': {
            'use_pure':True
        },
    }
}

use_pure указывает mysql-connector, что вместо его расширения C будет использоваться чистое соединение python.