Mercurial > p > mysql-python > mysqldb-2
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 ]))) |