При обновлении в 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.