在Python中打印SQLAlchemy查询

在Python中打印SQLAlchemy查询,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,我需要知道用值打印SQLAlchemy查询的方法 我可以打印正在处理的查询,但它不显示值,而只是显示字段名本身 SELECT recordsets.id AS recordsets_id, recordsets.version AS recordsets_version FROM recordsets WHERE recordsets.domain_id = :domain_id_1 AND recordsets.tenant_id IN (:tenant_id_1, :tenant_id_

我需要知道用值打印SQLAlchemy查询的方法

我可以打印正在处理的查询,但它不显示值,而只是显示字段名本身

SELECT recordsets.id AS recordsets_id, recordsets.version AS recordsets_version
FROM recordsets 
WHERE recordsets.domain_id = :domain_id_1 
AND recordsets.tenant_id IN (:tenant_id_1, :tenant_id_2) 
AND recordsets.name IN (:name_1, :name_2)

因此,我需要查看值本身,而不是:name_1、:name_2或:tenant_id_1、:tenant_id_2。

当您创建引擎时,您可以通过设置
echo
打开
True
来打开日志记录。这将打印所有查询及其参数

例如:

engine = create_engine("mysql://scott:tiger@hostname/dbname",
                        encoding='latin1', echo=True)
见:

对于您的示例,输出如下所示:

2015-11-16 15:50:25,137 INFO sqlalchemy.engine.base.Engine SELECT recordsets.id AS recordsets_id, recordsets.version AS recordsets_version
FROM recordsets 
WHERE recordsets.domain_id = :domain_id_1 
AND recordsets.tenant_id IN (:tenant_id_1, :tenant_id_2) 
AND recordsets.name IN (:name_1, :name_2)
2015-11-16 15:50:25,137 INFO sqlalchemy.engine.base.Engine {'domain_id_1': 'THE actual domain id', 'tenant_id_1': 234, 'tenant_id_2': 456, 'name_1': 'your first name', 'name_2': 'your second example name'}

我正处于开发阶段,无法按照您的指定返回到引擎创建。现在我可以做什么?您可能正在调用sqlalchemy。在您的代码中的某个地方创建引擎(…)。您可以调整参数。你使用记录器吗?然后您可以尝试使用以下方法:(查看已接受的答案)只需使用标准python日志模块启用日志记录:
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
,即可在创建引擎后的任何时间在代码中启用日志记录。在这里,我假设您已经在应用程序开始时配置了日志记录。