python SQLAlchemy 查询慢sql
参考博客: https://www.cnblogs.com/1a2a/p/10408516.html
1.config文件添加如下配置
1 FLASKY_DB_QUERY_TIMEOUT = 0.1 # 设置sql执行超时时间 0.1s 2 SQLALCHEMY_RECORD_QUERIES = True # 启用慢查询记录功能
2.public文件添加如下代码,可将 打印的语句个性化输出
1 from flask_sqlalchemy get_debug_queries 2 3 @app.after_request 4 def after_request(response): 5 for query in get_debug_queries(): 6 if query.duration >= app.config['FLASKY_DB_QUERY_TIMEOUT']: 7 # query.statement:查询的sql 8 # query.duration: 耗时 9 # 打印超时sql和时间 10 print('----慢sql-----\t\nsql:\t\n {sql} \t\n耗时:{duration}'.format(sql=query.statement,duration=query.duration) 11 return response
完整的 public文件代码如下:
1 from flask import Flask 2 from flask_sqlalchemy import SQLAlchemy,get_debug_queries 3 import config 4 5 app = Flask(__name__) 6 app.config.from_object(config) 7 db = SQLAlchemy(app) 8 9 @app.after_request 10 def after_request(response): 11 for query in get_debug_queries(): 12 if query.duration >= app.config['FLASKY_DB_QUERY_TIMEOUT']: 13 # query.statement:查询的sql 14 # query.duration: 耗时 15 # 打印超时sql和时间
16 print('----慢sql-----\t\nsql:\t\n {sql} \n\t耗时:{duration}'.format(sql=query.statement,duration=query.duration) 17 return response
效果如图: