@@ -763,25 +763,28 @@ def _get_default_schema_name(self, connection):
763
763
return IRISDialect .default_schema_name
764
764
765
765
def _get_option (self , connection , option ):
766
- cursor = connection .cursor ()
767
- # cursor = connection.cursor()
768
- cursor .execute ('SELECT %SYSTEM_SQL.Util_GetOption(?)' , option )
769
- row = cursor .fetchone ()
770
- if row :
771
- return row [0 ]
766
+ with connection .cursor () as cursor :
767
+ cursor .execute ('SELECT %SYSTEM_SQL.Util_GetOption(?)' , option )
768
+ row = cursor .fetchone ()
769
+ if row :
770
+ return row [0 ]
772
771
return None
773
772
774
- def _set_option (self , connection , option , value ):
775
- cursor = connection .cursor ()
776
- # cursor = connection.cursor()
777
- cursor .execute ('SELECT %SYSTEM_SQL.Util_SetOption(?, ?)' , [option , value ])
778
- row = cursor .fetchone ()
779
- if row :
780
- return row [0 ]
773
+ def _set_option (self , connection , option , value ):
774
+ with connection .cursor () as cursor :
775
+ cursor .execute ('SELECT %SYSTEM_SQL.Util_SetOption(?, ?)' , [option , value ])
776
+ row = cursor .fetchone ()
777
+ if row :
778
+ return row [0 ]
781
779
return None
782
780
783
781
def get_isolation_level (self , connection ):
784
- level = int (self ._get_option (connection , 'IsolationMode' ))
782
+ try :
783
+ level = int (self ._get_option (connection , 'IsolationMode' ))
784
+ except dbapi .InterfaceError :
785
+ # caught access violation error
786
+ # by default it's 0
787
+ level = 0
785
788
if level == 0 :
786
789
return 'READ UNCOMMITTED'
787
790
elif level == 1 :
@@ -795,12 +798,10 @@ def set_isolation_level(self, connection, level_str):
795
798
connection .setAutoCommit (True )
796
799
else :
797
800
connection .setAutoCommit (False )
798
- level = 0
799
- if level_str == 'READ COMMITTED' :
800
- level = 1
801
- elif level_str == 'READ VERIFIED' :
802
- level = 3
803
- self ._set_option (connection , 'IsolationMode' , level )
801
+ if level_str not in ['READ COMMITTED' , 'READ VERIFIED' ]:
802
+ level_str = 'READ UNCOMMITTED'
803
+ with connection .cursor () as cursor :
804
+ cursor .execute ('SET TRANSACTION ISOLATION LEVEL ' + level_str )
804
805
805
806
@classmethod
806
807
def dbapi (cls ):
0 commit comments