33"""
44import os
55import re
6+ import sys
67
78from django .core .exceptions import ImproperlyConfigured
89
1819if pyodbc_ver < (2 , 0 , 38 , 9999 ):
1920 raise ImproperlyConfigured ("pyodbc 2.0.38 or newer is required; you have %s" % Database .version )
2021
22+ from django .db import utils
2123from django .db .backends import BaseDatabaseWrapper , BaseDatabaseFeatures , BaseDatabaseValidation
2224from django .db .backends .signals import connection_created
2325from django .conf import settings
3840from django_pyodbc .creation import DatabaseCreation
3941from django_pyodbc .introspection import DatabaseIntrospection
4042
41- DatabaseError = Database .DatabaseError
43+ DatabaseError = Database .Error
4244IntegrityError = Database .IntegrityError
4345
4446class DatabaseFeatures (BaseDatabaseFeatures ):
@@ -318,7 +320,15 @@ def execute(self, sql, params=()):
318320 sql = self .format_sql (sql , len (params ))
319321 params = self .format_params (params )
320322 self .last_params = params
321- return self .cursor .execute (sql , params )
323+
324+ try :
325+ return self .cursor .execute (sql , params )
326+ except IntegrityError :
327+ e = sys .exc_info ()[1 ]
328+ raise utils .IntegrityError (* e .args )
329+ except DatabaseError :
330+ e = sys .exc_info ()[1 ]
331+ raise utils .DatabaseError (* e .args )
322332
323333 def executemany (self , sql , params_list ):
324334 sql = self .format_sql (sql )
@@ -329,7 +339,15 @@ def executemany(self, sql, params_list):
329339 else :
330340 raw_pll = params_list
331341 params_list = [self .format_params (p ) for p in raw_pll ]
332- return self .cursor .executemany (sql , params_list )
342+
343+ try :
344+ return self .cursor .executemany (sql , params_list )
345+ except IntegrityError :
346+ e = sys .exc_info ()[1 ]
347+ raise utils .IntegrityError (* e .args )
348+ except DatabaseError :
349+ e = sys .exc_info ()[1 ]
350+ raise utils .DatabaseError (* e .args )
333351
334352 def format_results (self , rows ):
335353 """
0 commit comments