Lio*_*ior 7 python database orm sqlalchemy
Python 支持链式比较:1 < 2 < 3转换为(1 < 2) and (2 < 3).
我正在尝试使用SQLAlchemy进行SQL查询,如下所示:
results = session.query(Couple).filter(10 < Couple.NumOfResults < 20).all()
Run Code Online (Sandbox Code Playgroud)
我得到的结果并不像预期的那样.我已经关闭了引擎的echo=True关键字,实际上 - 生成的SQL查询只包含了两个比较中的一个.
我找不到任何明确说明这是禁止的文件.我假设如果Python支持这种类型的表达式,那么SQLAlchemy也应该支持它.
为什么这不起作用?我有一个可能的解决方案(在答案中分享),但很高兴听到其他意见.
原因是 Python 实际上计算类似于这样的东西:
_tmp = Couple.NumOfResults
(10 < _tmp and _tmp < 20)
Run Code Online (Sandbox Code Playgroud)
andSQLAlchemy 不支持该运算符(应该使用它and_)。因此 - SQLAlchemy 中不允许进行链式比较。
在最初的示例中,应该编写以下代码:
results = session.query(Couple).filter(and_(10 < Couple.NumOfResults,
Couple.NumOfResults < 20)).all()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |