1
SQLAlchemy Beaker Caching example의 _params_from_query
함수를 사용하여 캐싱에 사용할 SQLAlchemy 쿼리 매개 변수 값을 추출하려고합니다.SQLAlchemy : 하위 쿼리에서 bindparam 값을 트래버스하는 방법?
아쉽게도 하위 쿼리와 관련된 쿼리를 사용하려고하면 하위 쿼리를 무시하고 주 쿼리 매개 변수를 통과하는 것으로 보입니다.
다음 예제 코드는 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
기능을 잘못 사용하고 있습니까? 하위 쿼리에서 매개 변수 값을 얻으려면 어떻게해야합니까?
잘 작동합니다. 또한 나는''칼럼을 테이블에 놓고 계속 경고했기 때문에''traverse''를''경고를 잡는 블록 ''(http://stackoverflow.com/a/5225951/201665)에 싸기로 결정했다. . 같은 키를 가진 다른 컬럼으로 대체되고있다.''joinedload''를 포함하는 쿼리에 대해서. –
아, 그렇게하지 않는 방법이 있습니다 ... 당신은 query.with_labels() 문을 말할 것입니다. 성명 – zzzeek
환상적입니다, 고마워요! –