【发布时间】:2012-03-05 04:08:18
【问题描述】:
我正在尝试使用 SQLAlchemy Beaker Caching example 中的函数 _params_from_query 提取 SQLAlchemy 查询参数值以用于缓存。
不幸的是,当我尝试使用涉及子查询的查询时,它似乎只遍历主查询参数,而忽略了子查询。
以下示例代码演示了从 SQLAlchemy 发行版中的 beaker_cache 示例文件夹运行时的这一点。
from environment import Session
from model import Person
from caching_query import _params_from_query
s = Session.query(Person.name).filter(Person.name=="subquery value").subquery()
q = Session.query(s.c.name).filter(s.c.name=="main query value")
print q.params()
print
print _params_from_query(q)
# SELECT anon_1.name AS anon_1_name
# FROM (SELECT person.name AS name
# FROM person
# WHERE person.name = :name_1) AS anon_1 <- two
# WHERE anon_1.name = :name_2 <- parameters
#
# ['main query value'] <- only one value
我是否错误地使用了该功能?如何从子查询中获取参数值?
【问题讨论】:
标签: python caching sqlalchemy subquery