mirror of
https://github.com/PyMySQL/mysqlclient.git
synced 2025-08-15 11:10:58 +08:00
Clear cursor._query before query() (#283)
This commit is contained in:
@ -75,6 +75,7 @@ class BaseCursor(object):
|
|||||||
self._result = None
|
self._result = None
|
||||||
self._warnings = None
|
self._warnings = None
|
||||||
self.rownumber = None
|
self.rownumber = None
|
||||||
|
self._rows = None
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
"""Close the cursor. No further queries will be possible."""
|
"""Close the cursor. No further queries will be possible."""
|
||||||
@ -172,23 +173,27 @@ class BaseCursor(object):
|
|||||||
nr = db.next_result()
|
nr = db.next_result()
|
||||||
if nr == -1:
|
if nr == -1:
|
||||||
return None
|
return None
|
||||||
self._do_get_result()
|
self._do_get_result(db)
|
||||||
self._post_get_result()
|
self._post_get_result()
|
||||||
self._warning_check()
|
self._warning_check()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def _post_get_result(self): pass
|
def _do_get_result(self, db):
|
||||||
|
self._result = result = self._get_result()
|
||||||
|
if result is None:
|
||||||
|
self.description = self.description_flags = None
|
||||||
|
else:
|
||||||
|
self.description = result.describe()
|
||||||
|
self.description_flags = result.field_flags()
|
||||||
|
|
||||||
def _do_get_result(self):
|
|
||||||
db = self._get_db()
|
|
||||||
self._result = self._get_result()
|
|
||||||
self.rowcount = db.affected_rows()
|
self.rowcount = db.affected_rows()
|
||||||
self.rownumber = 0
|
self.rownumber = 0
|
||||||
self.description = self._result and self._result.describe() or None
|
|
||||||
self.description_flags = self._result and self._result.field_flags() or None
|
|
||||||
self.lastrowid = db.insert_id()
|
self.lastrowid = db.insert_id()
|
||||||
self._warnings = None
|
self._warnings = None
|
||||||
|
|
||||||
|
def _post_get_result(self):
|
||||||
|
pass
|
||||||
|
|
||||||
def setinputsizes(self, *args):
|
def setinputsizes(self, *args):
|
||||||
"""Does nothing, required by DB API."""
|
"""Does nothing, required by DB API."""
|
||||||
|
|
||||||
@ -248,7 +253,6 @@ class BaseCursor(object):
|
|||||||
except Exception:
|
except Exception:
|
||||||
exc, value = sys.exc_info()[:2]
|
exc, value = sys.exc_info()[:2]
|
||||||
self.errorhandler(self, exc, value)
|
self.errorhandler(self, exc, value)
|
||||||
self._executed = query
|
|
||||||
if not self._defer_warnings:
|
if not self._defer_warnings:
|
||||||
self._warning_check()
|
self._warning_check()
|
||||||
return res
|
return res
|
||||||
@ -364,20 +368,18 @@ class BaseCursor(object):
|
|||||||
if isinstance(q, unicode):
|
if isinstance(q, unicode):
|
||||||
q = q.encode(db.encoding, 'surrogateescape')
|
q = q.encode(db.encoding, 'surrogateescape')
|
||||||
self._query(q)
|
self._query(q)
|
||||||
self._executed = q
|
|
||||||
if not self._defer_warnings:
|
if not self._defer_warnings:
|
||||||
self._warning_check()
|
self._warning_check()
|
||||||
return args
|
return args
|
||||||
|
|
||||||
def _do_query(self, q):
|
|
||||||
db = self._get_db()
|
|
||||||
self._last_executed = q
|
|
||||||
db.query(q)
|
|
||||||
self._do_get_result()
|
|
||||||
return self.rowcount
|
|
||||||
|
|
||||||
def _query(self, q):
|
def _query(self, q):
|
||||||
return self._do_query(q)
|
db = self._get_db()
|
||||||
|
self._result = None
|
||||||
|
db.query(q)
|
||||||
|
self._do_get_result(db)
|
||||||
|
self._post_get_result()
|
||||||
|
self._executed = q
|
||||||
|
return self.rowcount
|
||||||
|
|
||||||
def _fetch_row(self, size=1):
|
def _fetch_row(self, size=1):
|
||||||
if not self._result:
|
if not self._result:
|
||||||
@ -408,11 +410,6 @@ class CursorStoreResultMixIn(object):
|
|||||||
def _get_result(self):
|
def _get_result(self):
|
||||||
return self._get_db().store_result()
|
return self._get_db().store_result()
|
||||||
|
|
||||||
def _query(self, q):
|
|
||||||
rowcount = self._do_query(q)
|
|
||||||
self._post_get_result()
|
|
||||||
return rowcount
|
|
||||||
|
|
||||||
def _post_get_result(self):
|
def _post_get_result(self):
|
||||||
self._rows = self._fetch_row(0)
|
self._rows = self._fetch_row(0)
|
||||||
self._result = None
|
self._result = None
|
||||||
@ -481,7 +478,8 @@ class CursorUseResultMixIn(object):
|
|||||||
|
|
||||||
_defer_warnings = True
|
_defer_warnings = True
|
||||||
|
|
||||||
def _get_result(self): return self._get_db().use_result()
|
def _get_result(self):
|
||||||
|
return self._get_db().use_result()
|
||||||
|
|
||||||
def fetchone(self):
|
def fetchone(self):
|
||||||
"""Fetches a single row from the cursor."""
|
"""Fetches a single row from the cursor."""
|
||||||
|
Reference in New Issue
Block a user