从字符串

时间:2015-09-10 21:15:58

标签: python sqlalchemy blaze

如何将sql where子句字符串转换为sqlalchemy查询?我假设我已经知道了桌子。

我正在构建一个Angular webapp,它可以访问Flask API以获取数据。 Flask正在使用sqlalchemy来查询数据库。来自SQL(http://querybuilder.js.org/plugins.html#import-export)的jQuery-QueryBuilder将过滤器导出为原始SQL,我希望将其传递回api,parse和query。

例如:

where_str = "name LIKE '%BOB%' AND fruit != 'pineapple'"

会转换为:

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

标记火焰,因为odo可能是我需要的。

2 个答案:

答案 0 :(得分:6)

您可以尝试执行session.query(Table).filter(where_str)。它在SQLAlchemy v0.5.8上对我有用。 您还可以构建整个SQL语句字符串,并使用Connection.execute()方法执行它。无论哪种方式,将SQL语句直接从网页传递到应用程序can be very dangerous

答案 1 :(得分:-1)

您无需过滤两次即可添加AND,您可以这样做:

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