Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a5716c3

Browse filesBrowse files
committed
Remove BaseCursor.__del__
Fixes PyMySQL#22 (Uncollectable cursor on Python 3.3)
1 parent cac52c9 commit a5716c3
Copy full SHA for a5716c3

File tree

Expand file treeCollapse file tree

2 files changed

+8
-20
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+8
-20
lines changed
Open diff view settings
Collapse file

‎MySQLdb/connections.py‎

Copy file name to clipboardExpand all lines: MySQLdb/connections.py
-2Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717

1818
def defaulterrorhandler(connection, cursor, errorclass, errorvalue):
1919
"""
20-
2120
If cursor is not None, (errorclass, errorvalue) is appended to
2221
cursor.messages; otherwise it is appended to
2322
connection.messages. Then errorclass is raised with errorvalue as
2423
the value.
2524
2625
You can override this with your own error handler by assigning it
2726
to the instance.
28-
2927
"""
3028
error = errorclass, errorvalue
3129
if cursor:
Collapse file

‎MySQLdb/cursors.py‎

Copy file name to clipboardExpand all lines: MySQLdb/cursors.py
+8-18Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444

4545

4646
class BaseCursor(object):
47-
4847
"""A base for Cursor classes. Useful attributes:
4948
5049
description
@@ -59,7 +58,6 @@ class BaseCursor(object):
5958
6059
arraysize
6160
default number of rows fetchmany() will fetch
62-
6361
"""
6462

6563
from _mysql_exceptions import MySQLError, Warning, Error, InterfaceError, \
@@ -85,17 +83,15 @@ def __init__(self, connection):
8583
self._info = None
8684
self.rownumber = None
8785

88-
def __del__(self):
89-
self.close()
90-
self.errorhandler = None
91-
self._result = None
92-
9386
def close(self):
9487
"""Close the cursor. No further queries will be possible."""
9588
if self.connection is None or self.connection() is None:
9689
return
97-
while self.nextset(): pass
90+
while self.nextset():
91+
pass
9892
self.connection = None
93+
self.errorhandler = None
94+
self._result = None
9995

10096
def _check_executed(self):
10197
if not self._executed:
@@ -124,7 +120,7 @@ def nextset(self):
124120
if self._executed:
125121
self.fetchall()
126122
del self.messages[:]
127-
123+
128124
db = self._get_db()
129125
nr = db.next_result()
130126
if nr == -1:
@@ -135,7 +131,7 @@ def nextset(self):
135131
return 1
136132

137133
def _post_get_result(self): pass
138-
134+
139135
def _do_get_result(self):
140136
db = self._get_db()
141137
self._result = self._get_result()
@@ -162,7 +158,6 @@ def _get_db(self):
162158
return con
163159

164160
def execute(self, query, args=None):
165-
166161
"""Execute a query.
167162
168163
query -- string, query to execute on server
@@ -173,9 +168,9 @@ def execute(self, query, args=None):
173168
%(key)s must be used as the placeholder.
174169
175170
Returns long integer rows affected, if any
176-
177171
"""
178-
del self.messages[:]
172+
while self.nextset():
173+
pass
179174
db = self._get_db()
180175

181176
# NOTE:
@@ -206,23 +201,19 @@ def execute(self, query, args=None):
206201
except TypeError as m:
207202
if m.args[0] in ("not enough arguments for format string",
208203
"not all arguments converted"):
209-
self.messages.append((ProgrammingError, m.args[0]))
210204
self.errorhandler(self, ProgrammingError, m.args[0])
211205
else:
212-
self.messages.append((TypeError, m))
213206
self.errorhandler(self, TypeError, m)
214207
except (SystemExit, KeyboardInterrupt):
215208
raise
216209
except:
217210
exc, value = sys.exc_info()[:2]
218-
self.messages.append((exc, value))
219211
self.errorhandler(self, exc, value)
220212
self._executed = query
221213
if not self._defer_warnings: self._warning_check()
222214
return r
223215

224216
def executemany(self, query, args):
225-
226217
"""Execute a multi-row query.
227218
228219
query -- string, query to execute on server
@@ -237,7 +228,6 @@ def executemany(self, query, args):
237228
This method improves performance on multiple-row INSERT and
238229
REPLACE. Otherwise it is equivalent to looping over args with
239230
execute().
240-
241231
"""
242232
del self.messages[:]
243233
db = self._get_db()

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.