사용자 요청을 기반으로 가능한 기준의 범위 (0-4)에서 데이터 저장소를 쿼리하려고합니다. 다음과 같이 NDB의 쿼리가 내장되어 있습니다 :조건에 따라 동적으로 쿼리를 작성하는 방법은 무엇입니까?
myfilter = []
myfilter.push('Account.userid >= 40')
myfilter.push('Account.userid < 50')
myfilter.push('Account.name == "John"')
query = Account.query(*myfilter)
조건문에 따라 어디서든 0 ~ 4 필터 인수에서있을 수 있습니다 :
query = Account.query(Account.userid >= 40, Account.userid < 50)
내가 뭔가를 할 수있는 방법이 있나요. 내 가정 (잘못 될 수 있음)은 필터가 필요없는 경우 catch-all (예 : Account.userid == *) 필터를 사용하는 것보다 필터를 생략하는 것이 더 바람직하다는 것입니다.
필터를 연결할 수 있지만 쿼리 개체가 불변이므로이 기능이 도움이되는지 확신하지 못합니다.
원래 쿼리 개체가 변경 가능하지 않기 때문에이 방법은 작동하지 않을 것이라고 생각했습니다. 그러나 그것을 작동시키는 방법을 찾았습니다. 필터를 사용하지 않더라도 각 필터에 대한 쿼리를 정의해야하기 때문에 매우 우아하지 않습니다. (예를 들어, 특정 필터를 신경 쓰지 않아도 query2를 정의해야합니다.) 어쨌든, 그건 내 목적에 충분하다. – lemontree
"그 특정 필터에 관심이 없다"는 것은 무엇을 의미합니까? –
매개 변수가 동적이고 부등식 필터를 사용하는 경우 색인이 누락 된 것 같습니다 @DanCornilescu? 가능하다고 생각되는 모든 가능한 쿼리를 열거 할 수 있고 각 쿼리에 대한 인덱스를 제공 할 수는 있습니다.이 임의의 쿼리는 데이터 저장소에 적합하지 않은 것 같습니다. – jcjones1515