oracle: fix closing cursors
This commit is contained in:
parent
651e1a1a6c
commit
c643fd30ac
2 changed files with 24 additions and 12 deletions
|
@ -125,7 +125,6 @@ class OracleDB:
|
||||||
log.debug("Just-try mode : do not really execute SQL query '%s'", sql)
|
log.debug("Just-try mode : do not really execute SQL query '%s'", sql)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
cursor = self._conn.cursor()
|
|
||||||
try:
|
try:
|
||||||
log.debug(
|
log.debug(
|
||||||
'Run SQL query "%s" %s',
|
'Run SQL query "%s" %s',
|
||||||
|
@ -135,10 +134,11 @@ class OracleDB:
|
||||||
for key, value in params.items()
|
for key, value in params.items()
|
||||||
]) if params else "without params"
|
]) if params else "without params"
|
||||||
)
|
)
|
||||||
if isinstance(params, dict):
|
with self._conn.cursor() as cursor:
|
||||||
cursor.execute(sql, **params)
|
if isinstance(params, dict):
|
||||||
else:
|
cursor.execute(sql, **params)
|
||||||
cursor.execute(sql)
|
else:
|
||||||
|
cursor.execute(sql)
|
||||||
self._conn.commit()
|
self._conn.commit()
|
||||||
return True
|
return True
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -164,7 +164,6 @@ class OracleDB:
|
||||||
:return: List of selected rows as dict on success, False otherwise
|
:return: List of selected rows as dict on success, False otherwise
|
||||||
:rtype: list, bool
|
:rtype: list, bool
|
||||||
"""
|
"""
|
||||||
cursor = self._conn.cursor()
|
|
||||||
try:
|
try:
|
||||||
log.debug(
|
log.debug(
|
||||||
'Run SQL SELECT query "%s" %s',
|
'Run SQL SELECT query "%s" %s',
|
||||||
|
@ -174,12 +173,15 @@ class OracleDB:
|
||||||
for key, value in params.items()
|
for key, value in params.items()
|
||||||
]) if params else "without params"
|
]) if params else "without params"
|
||||||
)
|
)
|
||||||
if isinstance(params, dict):
|
with self._conn.cursor() as cursor:
|
||||||
cursor.execute(sql, **params)
|
if isinstance(params, dict):
|
||||||
else:
|
cursor.execute(sql, **params)
|
||||||
cursor.execute(sql)
|
else:
|
||||||
cursor.rowfactory = lambda *args: dict(zip([d[0] for d in cursor.description], args))
|
cursor.execute(sql)
|
||||||
results = cursor.fetchall()
|
cursor.rowfactory = lambda *args: dict(
|
||||||
|
zip([d[0] for d in cursor.description], args)
|
||||||
|
)
|
||||||
|
results = cursor.fetchall()
|
||||||
return results
|
return results
|
||||||
except Exception:
|
except Exception:
|
||||||
log.error(
|
log.error(
|
||||||
|
|
|
@ -15,8 +15,10 @@ class FakeCXOracleCursor:
|
||||||
self.expected_return = expected_return
|
self.expected_return = expected_return
|
||||||
self.expected_just_try = expected_just_try
|
self.expected_just_try = expected_just_try
|
||||||
self.expected_exception = expected_exception
|
self.expected_exception = expected_exception
|
||||||
|
self.opened = True
|
||||||
|
|
||||||
def execute(self, sql, **params):
|
def execute(self, sql, **params):
|
||||||
|
assert self.opened
|
||||||
if self.expected_exception:
|
if self.expected_exception:
|
||||||
raise Exception("%s.execute(%s, %s): expected exception" % (self, sql, params))
|
raise Exception("%s.execute(%s, %s): expected exception" % (self, sql, params))
|
||||||
if self.expected_just_try and not sql.lower().startswith('select '):
|
if self.expected_just_try and not sql.lower().startswith('select '):
|
||||||
|
@ -26,8 +28,16 @@ class FakeCXOracleCursor:
|
||||||
return self.expected_return
|
return self.expected_return
|
||||||
|
|
||||||
def fetchall(self):
|
def fetchall(self):
|
||||||
|
assert self.opened
|
||||||
return self.expected_return
|
return self.expected_return
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
self.opened = True
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, *args):
|
||||||
|
self.opened = False
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "FakeCXOracleCursor(%s, %s, %s, %s)" % (
|
return "FakeCXOracleCursor(%s, %s, %s, %s)" % (
|
||||||
self.expected_sql, self.expected_params,
|
self.expected_sql, self.expected_params,
|
||||||
|
|
Loading…
Reference in a new issue