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

私はあなたがやろうとしていることを理解していません。フィルターがブール値フィルターを取得するだけでなく、データをフィルター処理するためにループする式を取得する必要があるからです。

この例を見てください(これは必要ないと思いますが、ヒントが得られるかもしれません):

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 に答える
0

実際に私が示した 2 番目の例は、列名にばかげた間違いを犯しただけです。お時間を無駄にして申し訳ありません。

于 2010-11-05T14:55:46.140 に答える