Подтвердить что ты не робот

Флажок SQLAlchemy отображает запросы для отладки

Я разрабатываю приложение с флягой и SQL Alchemy. Мне нужно отобразить выполненные запросы для создания страницы вместе с тем временем, которое каждый запрос взял для отладки

Какой лучший способ сделать это?

4b9b3361

Ответ 1

Я не использовал его сам, но кажется, что панель инструментов Flask Debug может помочь в этом.

https://github.com/mgood/flask-debugtoolbar

Это порт панели инструментов django-debug, который можно использовать для профилирования запросов. Документация Flask Debug-toolbar не упоминает об этом, но есть код для SQLAlchemyDebugPanel.
Поэтому я думаю, что стоит взглянуть на проект и посмотреть, делает ли он то, что вам нужно.

Ответ 2

Если вы используете расширение Flask и не хотите беспокоиться с create_engine, вы можете установить ключ конфигурации SQLALCHEMY_ECHO=True.

http://flask-sqlalchemy.pocoo.org/2.1/config/

Ответ 3

app.config['SQLALCHEMY_ECHO'] = True

Ответ 4

Поздний ответ, но установка "echo = True" в вашей sqlalchemy create_engine будет регистрировать выполняемые запросы и время.

Ответ 5

Другой ответ работает только с 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). Я пытался понять, какие запросы формирует моя алхимия, и я понял.

Ответ 6

Если вы используете собственную конфигурацию регистрации python, вам может потребоваться просто установить уровень регистратора "sqlalchemy.engine" на "INFO" в вашем конфигурации.

Существует множество способов настройки ведения журнала python, но вот пример с помощью logging.config.dictConfig()

import logging.config

logging.config.dictConfig({
   ...
   'loggers': {
       'sqlalchemy.engine': {
           'level': 'INFO',
           'handlers': ...
       }
   }
})

Ответ 7

В дополнение к ответу Cawb07, который решил это для меня, убедитесь, что у вас есть DEBUG_TB_INTERCEPT_REDIRECTS установите значение True, когда вы запрашиваете перед перенаправлением.