0

我正在尝试做这样的事情:

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()

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

4

2 回答 2

0

实际上,我给出的第二个示例有效,我只是在列名中犯了一个愚蠢的错误。很抱歉浪费了你的时间。

于 2010-11-05T14:55:46.140 回答
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))

希望这会有所帮助

于 2010-11-05T14:32:39.733 回答