comparison MySQLdb/converters.py @ 66:5a7c30cd9de2 MySQLdb

By exposing connection on result, decoders can be simplified: Only the field object is needed. Turned on leak testing and found a leak writing BLOBs. removed one of the old stubs in Cursor.
author adustman
date Sun, 29 Mar 2009 16:26:30 +0000
parents 2d6a35051f64
children 98d968f5af11
comparison
equal deleted inserted replaced
65:7a60c4574baf 66:5a7c30cd9de2
161 if o is None: return o 161 if o is None: return o
162 return f(o) 162 return f(o)
163 _filter_NULL.__name__ = f.__name__ 163 _filter_NULL.__name__ = f.__name__
164 return _filter_NULL 164 return _filter_NULL
165 165
166 def default_decoder(cursor, field): 166 def default_decoder(field):
167 return str 167 return str
168 168
169 def simple_decoder(cursor, field): 169 def simple_decoder(field):
170 return simple_field_decoders.get(field.type, None) 170 return simple_field_decoders.get(field.type, None)
171 171
172 character_types = [ 172 character_types = [
173 FIELD_TYPE.BLOB, 173 FIELD_TYPE.BLOB,
174 FIELD_TYPE.STRING, 174 FIELD_TYPE.STRING,
175 FIELD_TYPE.VAR_STRING, 175 FIELD_TYPE.VAR_STRING,
176 FIELD_TYPE.VARCHAR, 176 FIELD_TYPE.VARCHAR,
177 ] 177 ]
178 178
179 def character_decoder(cursor, field): 179 def character_decoder(field):
180 if field.type not in character_types: 180 if field.type not in character_types:
181 return None 181 return None
182 if field.charsetnr == 63: # BINARY 182 if field.charsetnr == 63: # BINARY
183 return str 183 return str
184 184
185 charset = cursor.connection.character_set_name() 185 charset = field.result.connection.character_set_name()
186 def char_to_unicode(s): 186 def char_to_unicode(s):
187 return s.decode(charset) 187 return s.decode(charset)
188 188
189 return char_to_unicode 189 return char_to_unicode
190 190