Python 从字符串生成sqlalchemy查询

Python 从字符串生成sqlalchemy查询,python,sqlalchemy,blaze,Python,Sqlalchemy,Blaze,如何将SQLWHERE子句字符串转换为sqlalchemy查询?我想我已经知道这张桌子了 我正在构建一个Angular Web应用程序,它通过FlaskAPI获取数据。Flask正在使用sqlalchemy查询数据库。jqueryquerybuilderfromsql()将过滤器导出为原始SQL,我希望将其传递回api、解析和查询 例如: where_str = "name LIKE '%BOB%' AND fruit != 'pineapple'" 将转换为: session.query(T

如何将SQLWHERE子句字符串转换为sqlalchemy查询?我想我已经知道这张桌子了

我正在构建一个Angular Web应用程序,它通过FlaskAPI获取数据。Flask正在使用sqlalchemy查询数据库。jqueryquerybuilderfromsql()将过滤器导出为原始SQL,我希望将其传递回api、解析和查询

例如:

where_str = "name LIKE '%BOB%' AND fruit != 'pineapple'"
将转换为:

session.query(Table).filter(Table.name.like('%BOB%')).filter(Table.fruit != 'pineapple)

标记blaze,因为odo可能正是我所需要的。

您无需过滤两次即可添加,您可以执行以下操作:

session.query(Table).filter(Table.name.like('%BOB%'), Table.fruit != 'pineapple)

您可以尝试执行
session.query(Table).filter(where\u str)
。它在SQLAlchemy v0.5.8上对我有效。
您还可以构建整个SQL语句字符串并使用该方法执行它。无论哪种方式,都可以将SQL语句作为字符串直接从网页传递到应用程序。

是的,我知道您可以执行,但您需要完整的SQL语句。我只有语句的WHERE部分。您使用的是哪个版本的SQLAlchemy?我们的应用程序仍然运行一个非常旧的应用程序(0.5.8),但我尝试了类似session.query(Table)、filter(where_str)的东西,它工作了我使用的是1.0.6,你是对的。尽管它可以工作,但它对直接使用字符串给出了警告,并建议使用诸如
session.query(Table).filter(text(where_str))
。重申一下Matheus所说的,让api接受SQL字符串不是很安全,但这是一个单独的主题。一旦您理解了它的含义,这将非常强大。有时,在SqlAlchemy中编写过滤器部分比在SQL中编写过滤器部分更困难(尤其是在不涉及用户输入的情况下)。知道这是可能的会节省我很多时间。是的,对不起,没有答案,但在将来可能会有帮助:)检查此线程: