首页 > 解决方案 > 从原始 SQL 字符串查询创建 SQLAlchemy 反向查询

问题描述

在 python SQLAlchemy 中,我们可以使用以下代码从 SQLAlchemy 查询对象创建原始字符串查询:

str(query.compile(compile_kwargs={"literal_binds": True}))

但我想做一个反向操作。我有一个原始字符串 SQL 查询(从上面的代码生成),并希望将其转换回原始 SQLAlchemy 查询对象,我实际上将其转换为字符串。

我尝试了以下代码:

db.session.query().from_statement(db.text(query_str))

但我无法在生成的 SQLAlchemy 查询对象中找到列。我不能在query(...)中提及任何列/模型,因为查询是完全动态的,而不像它从内部查询中获取数据并且有很多连接那样简单。

因此,实际的 SQLAlchemy 查询对象如下所示,我们可以在其中看到所有列和其他查询部分: 在此处输入图像描述

但下面是我们从原始 SQL 字符串中获得的 SQLAlchemy 查询对象: 在此处输入图像描述

参考:

  1. Sqlalchemy from_statement() 找不到列
  2. 如何从原始 sql 字符串中获取 sqlalchemy 查询对象?

标签: pythonpostgresqlsqlalchemyflask-sqlalchemyalembic

解决方案


推荐阅读