Thread: Mixing DictConnection and LoggingConnection

Mixing DictConnection and LoggingConnection

From
Alexey Luchko
Date:
Hi!

I was thinking of a connection object fetching dicts and reporting slow
queries.  However, the way the connections classes are implemented make me
think its impossible to create MyCursor(DictCursor, LoggingCursor) because
they refer directly to parent class for calling inherited methods, like
_cursor.method(....).

Am I wrong?

--
Alex

Re: Mixing DictConnection and LoggingConnection

From
Daniele Varrazzo
Date:
On Wed, May 9, 2012 at 10:46 AM, Alexey Luchko <luch@ank-sia.com> wrote:
> Hi!
>
> I was thinking of a connection object fetching dicts and reporting slow
> queries.  However, the way the connections classes are implemented make me
> think its impossible to create MyCursor(DictCursor, LoggingCursor) because
> they refer directly to parent class for calling inherited methods, like
> _cursor.method(....).
>
> Am I wrong?

Yes, as it is now I think you should subclass DictCursor yourself to add timing.

We should probably use super(), but mixin-style inheritance doesn't
just happen: the classes should be designed for it and I'm afraid they
weren't. I'm not even sure the base C classes are "new style" classes.
However, yes, I'm all for it: can you try patching the module so that
mixing up different orthogonal subclasses (e.g. logging vs.
namedtuple...) works as expected?

-- Daniele