comparison MySQLdb/cursors.py @ 54:6e31278d3433 MySQLdb

There's no good reason to delay imports when the module is (1) useless without it or (2) you do the same late import more than once.
author kylev
date Mon, 23 Feb 2009 23:52:44 +0000
parents 10038670b963
children 9ea2b0e9302e
comparison
equal deleted inserted replaced
53:4bfc4e612de0 54:6e31278d3433
9 9
10 __revision__ = "$Revision$"[11:-2] 10 __revision__ = "$Revision$"[11:-2]
11 __author__ = "$Author$"[9:-2] 11 __author__ = "$Author$"[9:-2]
12 12
13 import re 13 import re
14 import sys
15 import weakref
14 16
15 INSERT_VALUES = re.compile(r"\svalues\s*" 17 INSERT_VALUES = re.compile(r"\svalues\s*"
16 r"(\(((?<!\\)'[^\)]*?\)[^\)]*(?<!\\)?'" 18 r"(\(((?<!\\)'[^\)]*?\)[^\)]*(?<!\\)?'"
17 r"|[^\(\)]|" 19 r"|[^\(\)]|"
18 r"(?:\([^\)]*\))" 20 r"(?:\([^\)]*\))"
38 """ 40 """
39 41
40 from MySQLdb.exceptions import MySQLError, Warning, Error, InterfaceError, \ 42 from MySQLdb.exceptions import MySQLError, Warning, Error, InterfaceError, \
41 DatabaseError, DataError, OperationalError, IntegrityError, \ 43 DatabaseError, DataError, OperationalError, IntegrityError, \
42 InternalError, ProgrammingError, NotSupportedError 44 InternalError, ProgrammingError, NotSupportedError
43 45
44 _defer_warnings = False 46 _defer_warnings = False
45 _fetch_type = None 47 _fetch_type = None
46 48
47 def __init__(self, connection): 49 def __init__(self, connection):
48 from weakref import proxy 50 self.connection = weakref.proxy(connection)
49
50 self.connection = proxy(connection)
51 self.description = None 51 self.description = None
52 self.description_flags = None 52 self.description_flags = None
53 self.rowcount = -1 53 self.rowcount = -1
54 self.arraysize = 1 54 self.arraysize = 1
55 self._executed = None 55 self._executed = None
58 self.errorhandler = connection.errorhandler 58 self.errorhandler = connection.errorhandler
59 self._result = None 59 self._result = None
60 self._warnings = 0 60 self._warnings = 0
61 self._info = None 61 self._info = None
62 self.rownumber = None 62 self.rownumber = None
63 63
64 def __del__(self): 64 def __del__(self):
65 self.close() 65 self.close()
66 self.errorhandler = None 66 self.errorhandler = None
67 self._result = None 67 self._result = None
68 68
69 def close(self): 69 def close(self):
70 """Close the cursor. No further queries will be possible.""" 70 """Close the cursor. No further queries will be possible."""
71 if not self.connection: 71 if not self.connection:
72 return 72 return
73 try: 73 try:
160 %(key)s must be used as the placeholder. 160 %(key)s must be used as the placeholder.
161 161
162 Returns long integer rows affected, if any 162 Returns long integer rows affected, if any
163 163
164 """ 164 """
165 from sys import exc_info
166 del self.messages[:] 165 del self.messages[:]
167 db = self._get_db() 166 db = self._get_db()
168 charset = db.character_set_name() 167 charset = db.character_set_name()
169 if isinstance(query, unicode): 168 if isinstance(query, unicode):
170 query = query.encode(charset) 169 query = query.encode(charset)
179 self.errorhandler(self, self.ProgrammingError, msg.args[0]) 178 self.errorhandler(self, self.ProgrammingError, msg.args[0])
180 else: 179 else:
181 self.messages.append((TypeError, msg)) 180 self.messages.append((TypeError, msg))
182 self.errorhandler(self, TypeError, msg) 181 self.errorhandler(self, TypeError, msg)
183 except: 182 except:
184 exc, value, traceback = exc_info() 183 exc, value, traceback = sys.exc_info()
185 del traceback 184 del traceback
186 self.messages.append((exc, value)) 185 self.messages.append((exc, value))
187 self.errorhandler(self, exc, value) 186 self.errorhandler(self, exc, value)
188 self._executed = query 187 self._executed = query
189 if not self._defer_warnings: 188 if not self._defer_warnings:
234 self.errorhandler(self, self.ProgrammingError, msg.args[0]) 233 self.errorhandler(self, self.ProgrammingError, msg.args[0])
235 else: 234 else:
236 self.messages.append((TypeError, msg)) 235 self.messages.append((TypeError, msg))
237 self.errorhandler(self, TypeError, msg) 236 self.errorhandler(self, TypeError, msg)
238 except: 237 except:
239 from sys import exc_info 238 exc, value, traceback = sys.exc_info()
240 exc, value, traceback = exc_info()
241 del traceback 239 del traceback
242 self.errorhandler(self, exc, value) 240 self.errorhandler(self, exc, value)
243 self.rowcount = int(self._query( 241 self.rowcount = int(self._query(
244 '\n'.join([start, ',\n'.join(sql_params), end, 242 '\n'.join([start, ',\n'.join(sql_params), end,
245 ]))) 243 ])))