如何从SQLAlchemy检索执行的SQL代码

问题描述

| 我正在使用sqlAlchemy,并想记录执行的sql代码(即已引用和替换了所有绑定参数的代码)。对于psycopg2,可以使用
Cursor
对象的
query
属性(请参见psycopg文档)。对于MysqLdb,可以使用
Cursor
对象的
_last_executed
属性。 我的问题是:如何使用sqlAlchemy接口检索刚刚执行的查询字符串?它提供了这样的功能还是我应该编写自己的帮助器功能? 在此先感谢您的帮助。     

解决方法

        SQLAlchemy使用标准的Python日志记录库。要将查询记录到名为“ 4”的文件中:
import logging

logging.basicConfig(filename=\'db.log\')
logging.getLogger(\'sqlalchemy.engine\').setLevel(logging.INFO)
使用Python日志记录时,请确保所有的
echo
标志都设置为
False
,以避免重复记录。现在向数据库添加一些内容:
>>> Movie(title=u\"Blade Runner\",year=1982)
>>> session.commit()
这将记录如下内容:
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