SQLAlchemy: как обойти значения bindparam в подзапросе? - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь извлечь значения параметров запроса SQLAlchemy для использования в кэшировании, используя функцию _params_from_query из примера кэширования SQLAlchemy Beaker .

К сожалению, когда я пытаюсь выполнитьВ запросе, включающем подзапрос, кажется, что он проходит только через основные параметры запроса, игнорируя подзапрос.

Следующий пример кода демонстрирует это при запуске из папки beaker_cache example в дистрибутиве SQLAlchemy.*

Я неправильно использую функцию?Как я могу также получить значения параметров из подзапроса?

1 Ответ

3 голосов
/ 14 февраля 2012

это ошибка в примере. Вот обходной путь, который должен получить все (хотя я хотел бы улучшить это, чтобы не требовать полной компиляции операторов):

diff -r affaa93fad92 examples/beaker_caching/caching_query.py
--- a/examples/beaker_caching/caching_query.py  Tue Feb 14 10:16:16 2012 -0500
+++ b/examples/beaker_caching/caching_query.py  Tue Feb 14 11:57:59 2012 -0500
@@ -268,8 +268,5 @@
             value = bind.value

         v.append(value)
-    if query._criterion is not None:
-        visitors.traverse(query._criterion, {}, {'bindparam':visit_bindparam})
-    for f in query._from_obj:
-        visitors.traverse(f, {}, {'bindparam':visit_bindparam})
+    visitors.traverse(query.statement, {}, {'bindparam':visit_bindparam})
     return v
...