2010-11-05 48 views
0

我試圖做這樣的事情:startswith一個常數SQLAlchemy的

Session.query(some_table).filter("/some/path/to/element".startswith(some_table.path)).all() 

也就是說,得到一定的路徑的所有「父」元素。我試過這樣做:

Session.query(some_table).filter(sqlalchemy.sql.expression.literal("/some/path/to/element").startswith(some_table.path)).all() 

但我得到了一些奇怪的例外。我想知道我想要的是甚至可能的。

+0

如果您收到異常,請發佈它們。沒有人可以介意閱讀 – knitti 2010-11-05 14:16:58

+0

這個例外情況並不是很豐富,因爲我確實做了一些愚蠢的事情。 http://paste.pocoo.org/show/286501/如果你有興趣。我正在關閉這個問題,因爲它不會幫助任何人。 – 2010-11-05 14:56:49

回答

0

我不明白你在做什麼,因爲它不是過濾器只是得到一個布爾值過濾器應該得到一個表達式,將循環它來過濾數據

看看這個例子(我不認爲你需要這一個,但也許它可以給你一些提示):

Session.query(some_table).filter(some_table.path.like('%/some/path/to/element')) 

或這個例子中,因爲如果我沒有理解好你想要得到的所有父路徑一個給定的路徑:

import os 

a = '/some/path/to/element' 
parent_path = [] 
# Get all parent path 
while a != '/': 
    a = os.path.split(a)[0] 
    parent_path.append(a) 

Session.query(some_table).filter(some_table.path.in_(parent_path)) 

希望這將有助於

0

其實第二個例子中,我給的作品,我只是做了列名愚蠢的錯誤。我很抱歉浪費你的時間。