我们正在尝试为我们的 Web 应用程序启用 SQL 查询前端,它是 WSGI 并使用 Python,使用 SQLAlchemy(核心,而不是 ORM)来查询 PostgreSQL 数据库。我们设置了几个数据层函数来帮助构建查询,现在我们正在尝试设置一些允许这种类型的查询:
select id from <table_name> where ... limit ...
在前端,我们有一个文本框,让用户输入 where 子句和 limit 子句,这样就可以从前端灵活动态地查询数据,也就是我们要启用即席查询。所以,我们现在唯一的第一手资料是:
select id from <table_name>
用户将输入,例如:
where date > <some_date>
where location is not null limit 10 order by location desc
使用相同的后端功能。select、column 和 table 应该由数据层管理(即它知道它们是什么,用户不需要知道这些)。但是,我不知道有什么方法可以让 SQLAlchemy 自动解析where
子句和limit
子句。我们现在拥有的是一个函数,它可以返回表名和 id 列的名称,然后使用它来创建一个文本查询,将其传递给 SQLAlchemy,作为text()
调用的输入。
有什么办法可以用 SQLAlchemy 或其他库来做到这一点?或者是否有更好的模式我应该知道,它不涉及解析 SQL,同时仍然允许来自前端的此功能?
非常感谢!所有建议将不胜感激。