2013-03-29 59 views
2

如果我得到了一个我没有构造的Query对象,有没有办法直接修改它的WHERE子句?我真的希望能够删除一些AND语句或替换查询的整个FROM子句,而不是从头开始。SQLAlchemy ORM:修改WHERE子句

我知道下面的方法来修改SELECT子句:

Query.with_entities(),Query.add_entities(),Query.add_columns(),Query.select_from()

这我想也会修改FROM。我发现我可以使用Query.where条款查看WHERE子句,但文档说它是只读的。

我意识到我在用SQL的概念来思考,但我现在比ORM更熟悉那些概念。任何帮助非常感谢。

回答

1

你可以直接修改query._where条款,但我会寻求一种方法来解决这个问题 - 无论是生成Query还是应该分解出来,以便非where条款的版本是可用的。

+0

我当然更愿意询问“到目前为止你在做什么?”这个查询,并且重新构建我想从头开始的部分,但我也不知道该怎么做。我可以: 'query.whereclause.clauses = [mytable.name.in(['jim','bob'])]' 我跑了一个没有错误的快速测试。这可能会破坏什么? – jkmacc