繁体   English   中英

如何记录SQLAlchemy生成的SQL和查询的执行时间?

[英]How can I record SQLAlchemy generated SQL and query execution times?

我正在尝试存储由SQLAlchemy生成的SQL查询,以及每个查询要运行多长时间。 我正在使用事件侦听器来存储SQL:

statements = []

@listens_for(DBSession.get_bind(), "before_cursor_execute", named=True)
def before_cursor_execute(**kw):
    statements.append(kw['statement'])

我可以使用相同的事件侦听器以某种方式存储执行时间,还是应该使用其他事件监听器?

您可以使用before_cursor_execute记录查询的开始时间 ,然后计算after_cursor_execute ,如下所示:

@event.listens_for(engine, "before_cursor_execute")
def _record_query_start(conn, cursor, statement, parameters, context, executemany):
    conn.info["query_start"] = datetime.now()

@event.listens_for(engine, "after_cursor_execute")
def _calculate_query_run_time(conn, cursor, statement, parameters, context, executemany):
    print("this query took {}".format(datetime.now() - conn.info["query_start"]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM