繁体   English   中英

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

[英]How to retrieve executed SQL code from SQLAlchemy

我正在使用 SQLAlchemy 并想记录执行的 SQL 代码(即所有绑定参数已被引用和替换的代码)。 psycopg2的情况下,可以使用Cursor object 的query属性(参见psycopg 文档)。 MySQLdb的情况下,可以使用Cursor object 的_last_executed属性。

我的问题是:如何使用 SQLAlchemy 接口检索刚刚执行的查询字符串? 它提供这样的功能还是我应该编写自己的助手 function?

提前感谢您的帮助。

SQLAlchemy 使用标准的 Python 日志库 要将查询记录到名为db.log的文件中:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM