我正在尝试做这样的事情:
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 :(得分: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))
希望这会有所帮助
答案 1 :(得分:0)
实际上我给出的第二个例子是有效的,我只是在列名中犯了一个愚蠢的错误。我很抱歉浪费你的时间。