@@ -372,14 +372,25 @@ def __iter__(self):
372
372
NotSupportedError = err .NotSupportedError
373
373
374
374
375
- class DictCursorMixin ( object ):
376
- # You can override this to use OrderedDict or other dict-like types.
375
+ class DictCursor ( Cursor ):
376
+ """A cursor which returns results as a dictionary"""
377
377
dict_type = dict
378
378
379
379
def _do_get_result (self ):
380
- print (dir (super (DictCursorMixin , self )))
381
- #super(DictCursorMixin, self)._do_get_result()
382
- super ()._do_get_result ()
380
+ conn = self ._get_db ()
381
+
382
+ self .rownumber = 0
383
+ self ._result = result = conn ._result
384
+
385
+ self .rowcount = result .affected_rows
386
+ self .description = result .description
387
+ self .lastrowid = result .insert_id
388
+ self ._rows = result .rows
389
+ self ._warnings_handled = False
390
+
391
+ if not self ._defer_warnings :
392
+ self ._show_warnings ()
393
+
383
394
fields = []
384
395
if self .description :
385
396
for f in self ._result .fields :
@@ -398,10 +409,6 @@ def _conv_row(self, row):
398
409
return self .dict_type (zip (self ._fields , row ))
399
410
400
411
401
- class DictCursor (DictCursorMixin , Cursor ):
402
- """A cursor which returns results as a dictionary"""
403
-
404
-
405
412
class SSCursor (Cursor ):
406
413
"""
407
414
Unbuffered Cursor, mainly useful for queries that return a lot of data,
@@ -520,5 +527,26 @@ def scroll(self, value, mode='relative'):
520
527
raise err .ProgrammingError ("unknown scroll mode %s" % mode )
521
528
522
529
523
- class SSDictCursor (DictCursorMixin , SSCursor ):
530
+ class SSDictCursor (SSCursor ):
524
531
"""An unbuffered cursor, which returns results as a dictionary"""
532
+
533
+ dict_type = dict
534
+
535
+ def _do_get_result (self ):
536
+ fields = []
537
+ if self .description :
538
+ for f in self ._result .fields :
539
+ name = f .name
540
+ if name in fields :
541
+ name = f .table_name + '.' + name
542
+ fields .append (name )
543
+ self ._fields = fields
544
+
545
+ if fields and self ._rows :
546
+ self ._rows = [self ._conv_row (r ) for r in self ._rows ]
547
+
548
+ def _conv_row (self , row ):
549
+ if row is None :
550
+ return None
551
+ return self .dict_type (zip (self ._fields , row ))
552
+
0 commit comments