Уведомления

Группа в Telegram: @pythonsu

#1 Июль 14, 2009 22:40:04

estin
От:
Зарегистрирован: 2008-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

SqlAlchemy генерируемые зпросы и время их выполнения

Добрый вечер.

Изучаю Pylons + SqlAlchemy (раньше использовал Django).

Как в рамках одной “сессии” (запрос - ответ) узнать какие SQL запросы получились и время их выполнения?

Все что пока нашел по теме - http://groups.google.com/group/sqlalchemy/browse_thread/thread/479a8cc188e933c3/e3519853143e9036?lnk=gst&q=execution+time#e3519853143e9036

Заранее всем спасибо.



Офлайн

#2 Июль 15, 2009 04:25:27

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

SqlAlchemy генерируемые зпросы и время их выполнения

Не знаю как насчет времени выполнения запроса (я такое смотрю в логах СУБД сервера), а сами запросы видно при включении логирования – http://www.sqlalchemy.org/docs/05/dbengine.html#configuring-logging



Офлайн

#3 Июль 15, 2009 21:23:49

estin
От:
Зарегистрирован: 2008-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

SqlAlchemy генерируемые зпросы и время их выполнения

Вечер добрый!

Вот мои наработки по теме.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:',
echo=True,
module=db #Здесь указываем модуль с интерфейсом DBAPI(2)
)
Сам модуль db.py
from sqlite3 import *

def connect(*args, **kwargs):
return NewConnection(*args, **kwargs)

class NewCursor(Cursor):
def execute(self, *args, **kwargs):
print 'Begin'
res = super(self.__class__, self).execute(*args, **kwargs)
print 'End'
return res

class NewConnection(Connection):
def cursor(self):
return NewCursor(self)
def execute(self, *args, **kwargs):
print 'Begin'
res = super(self.__class__, self).execute(*args, **kwargs)
print 'End'
return res
Остается только “обвязать” все и в нужном виде представить для комфортного дебага,
Можно и debug toolbar с информацией по SQL запросам для Pylons сделать :)
Спасибо PEP 0249



Офлайн

#4 Июль 16, 2009 00:03:32

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

SqlAlchemy генерируемые зпросы и время их выполнения

Так будет правильнее:

...
def execute(self, *args, **kwargs):
print 'Begin'
try:
return super(self.__class__, self).execute(*args, **kwargs)
finally:
print 'End'
...
def execute(self, *args, **kwargs):
print 'Begin'
try:
return super(self.__class__, self).execute(*args, **kwargs)
finally:
print 'End'
..bw



Офлайн

#5 Июль 17, 2009 13:02:22

ofigetitelno
От:
Зарегистрирован: 2006-08-01
Сообщения: 136
Репутация: +  0  -
Профиль   Отправить e-mail  

SqlAlchemy генерируемые зпросы и время их выполнения

:)
http://techspot.zzzeek.org/?p=31
Может подойдёт…



Офлайн

#6 Июль 17, 2009 15:00:34

estin
От:
Зарегистрирован: 2008-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

SqlAlchemy генерируемые зпросы и время их выполнения

ofigetitelno, вот спасибо!
Подошло :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version