在debug模式或测试模式下,Flask-SQLAlchemy会自动开启查询记录,可以配置SQLALCHEMY_RECORD_QUERIES=True来显式开启查询记录功能。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy, get_debug_queries
app = Flask(__name__)
app.config['SQLALCHEMY_RECORD_QUERIES'] = True # 开启慢查询设置
app.config['SLOW_QUERY_THRESHOLD'] = 1 # 查询语句执行大于等于1s,就被认为是慢查询
def register_request_handlers(app2):
@app2.after_request # 获取查询数据,必须是请求完成时
def query_profiler(response):
for q in get_debug_queries(): # get_debug_queries()包含所有查询信息
if q.duration >= app2.config['SLOW_QUERY_THRESHOLD']:
app2.logger.warning(
'Slow query: Duration: %fs\n Context: %s\nQuery: %s\n ' %(q.duration, q.context, q.statement)
)
return response
register_request_handlers(app)
查询信息元组包含属性
评论列表
已有0条评论