Я разрабатываю приложение с флягой и SQL Alchemy. Мне нужно отобразить выполненные запросы для создания страницы вместе с тем временем, которое каждый запрос взял для отладки
Какой лучший способ сделать это?
Я разрабатываю приложение с флягой и SQL Alchemy. Мне нужно отобразить выполненные запросы для создания страницы вместе с тем временем, которое каждый запрос взял для отладки
Какой лучший способ сделать это?
Я не использовал его сам, но кажется, что панель инструментов Flask Debug может помочь в этом.
https://github.com/mgood/flask-debugtoolbar
Это порт панели инструментов django-debug, который можно использовать для профилирования запросов.
Документация Flask Debug-toolbar не упоминает об этом, но есть код для SQLAlchemyDebugPanel.
Поэтому я думаю, что стоит взглянуть на проект и посмотреть, делает ли он то, что вам нужно.
Если вы используете расширение Flask и не хотите беспокоиться с create_engine, вы можете установить ключ конфигурации SQLALCHEMY_ECHO=True
.
app.config['SQLALCHEMY_ECHO'] = True
Поздний ответ, но установка "echo = True" в вашей sqlalchemy create_engine будет регистрировать выполняемые запросы и время.
Другой ответ работает только с flask_sqlalchemy
, а не flask
и sqlalchemy
.
Если вы хотите использовать native sqlalchemy
, вы можете сделать это как быстрое исправление: http://yuji.wordpress.com/2014/01/07/use-native-sqlalchemy-in-flask-debugtoolbar/
from flask.ext.sqlalchemy import _EngineDebuggingSignalEvents
_EngineDebuggingSignalEvents(engine, app.import_name).register()
# use at your own risk! a development environment shouldn't really care though!
Конечные точки объяснения/выбора не работают, не проводя их вручную, но, по крайней мере, работает отладчик запросов (count и sql). Я пытался понять, какие запросы формирует моя алхимия, и я понял.
Если вы используете собственную конфигурацию регистрации python, вам может потребоваться просто установить уровень регистратора "sqlalchemy.engine" на "INFO" в вашем конфигурации.
Существует множество способов настройки ведения журнала python, но вот пример с помощью logging.config.dictConfig()
import logging.config
logging.config.dictConfig({
...
'loggers': {
'sqlalchemy.engine': {
'level': 'INFO',
'handlers': ...
}
}
})
В дополнение к ответу Cawb07, который решил это для меня, убедитесь, что у вас есть
DEBUG_TB_INTERCEPT_REDIRECTS
установите значение True, когда вы запрашиваете перед перенаправлением.