Cómo recuperar código SQL ejecutado desde SQLAlchemy

Estoy usando SQLAlchemy y me gustaría registrar el código SQL ejecutado (es decir, el código con todos los parámetros de enlace ya citados y reemplazados). En el caso de psycopg2 fue posible mediante el atributo de query del objeto Cursor (consulte la documentación de psycopg ). En el caso de MySQLdb , es posible usar el atributo _last_executed del objeto Cursor .

Mi pregunta es: ¿Cómo puedo recuperar la cadena de consulta que se acaba de ejecutar mediante las interfaces SQLAlchemy? ¿Proporciona dicha funcionalidad o debo escribir mi propia función auxiliar?

Gracias de antemano por cualquier ayuda.

SQLAlchemy usa la biblioteca de registro estándar de Python . Para registrar consultas en un archivo llamado db.log :

 import logging logging.basicConfig(filename='db.log') logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) 

Al usar el registro de Python, asegúrese de que todos los indicadores de echo estén configurados en False , para evitar el registro duplicado. Ahora agregue algo a la db:

 >>> Movie(title=u"Blade Runner", year=1982) >>> session.commit() 

Que registrará algo como:

 INFO:sqlalchemy.engine.base.Engine:BEGIN (implicit) INFO:sqlalchemy.engine.base.Engine:INSERT INTO models_movie (title, year, description) VALUES (%(title)s, %(year)s, %(description)s) RETURNING models_movie.id INFO:sqlalchemy.engine.base.Engine:{'title': u'Blade Runner', 'description': None, 'year': 1982} INFO:sqlalchemy.engine.base.Engine:COMMIT