Hi Martijn -

Sorry I missed this post. Your solution is pretty good. For the setattr() stuff, both Connection and Session have an .info attribute which is a dictionary you can use for memoizations.



On 06/27/2016 03:02 AM, Martijn van Oosterhout wrote:

On Tuesday, June 21, 2016 at 11:25:36 PM UTC+2, Martijn van Oosterhout
wrote:

    Hi,

    In an effort to find the bottlenecks in our system we'd like to
    collect statistics about which queries take a long time, or return a
    lot of rows, or paths which are triggering lots of queries.

    Now, the system consists of lots of parts working in parallel, each
    with their own Session object, so we want the stats per Session.


In answer to my own question, this is what I came up with:
https://gist.github.com/kleptog/1a866b67faa2c917758496a4fbbf92b8

It allows you to do things like:

    s1 = SessionMaker()
    s1.execute("SELECT 1")
    s1.commit()
    print s1._query_stats
    print s1._query_stats.query_log

Output:

<QueryStats count=1 time=0.00s>
[(1467010565.738685, 'SELECT 1', {}, [('__main__', '<module>', 127),
('__main__', 'test', 115)], 0.0002570152282714844)]

Using the log you have access to all the executed queries, which you can
the aggregate, save to disk, etc. It tracks start time, parameters, call
stack and duration. The adding of extra attributes to the Session and
Connection objects is not pretty, but it works.

Have a nice day,
--
Martijn van Oosterhout <klep...@gmail.com <mailto:klep...@gmail.com>>
http://svana.org/kleptog/

--
You received this message because you are subscribed to the Google
Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to sqlalchemy+unsubscr...@googlegroups.com
<mailto:sqlalchemy+unsubscr...@googlegroups.com>.
To post to this group, send email to sqlalchemy@googlegroups.com
<mailto:sqlalchemy@googlegroups.com>.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to