2013-03-29 2 views
2

Если мне предоставлен объект Query, который я не создал, есть ли способ напрямую изменить его предложение WHERE? Я действительно надеюсь, что смогу удалить некоторые инструкции AND или заменить целое предложение FROM запроса вместо того, чтобы начать с нуля.SQLAlchemy ORM: изменить предложение WHERE

Я знаю следующих способов изменить ВЫБЕРИТЕ положение:

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

который Я думаю, что также изменит FROM. И я вижу, что я могу просмотреть предложение WHERE с Query.whereclause, но документы говорят, что он доступен только для чтения.

Я понимаю, что я думаю в терминах SQL, но я больше знаком с этими понятиями, чем ORM, на данный момент. Любая помощь очень ценится.

ответ

1

вы можете изменить query._whereclause напрямую, но я бы попытался найти способ не иметь эту проблему в первую очередь - независимо от того, генерируется ли запрос, следует исключить так, чтобы версия non-whereclause предоставляется.

+0

Я бы предпочел задать вопрос «что вы до сих пор?» И восстановить те части, которые я хочу с нуля, но я тоже не знаю, как это сделать. Я могу: 'query.whereclause.clauses = [mytable.name.in (['jim', 'bob'])]' Я проверил быстрый тест без ошибок. Возможно, это что-то сломает? – jkmacc

Смежные вопросы