начинается с константы в sqlalchemy - PullRequest
0 голосов
/ 05 ноября 2010

Я пытаюсь сделать что-то вроде этого:

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

Но я получаю некоторые странные исключения с этим.Интересно, возможно ли то, что я хочу, на самом деле.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2010

На самом деле, во втором примере, который я дал, я просто допустил глупую ошибку в названии столбца. Прошу прощения за трату вашего времени.

0 голосов
/ 05 ноября 2010

Я не понимаю, что вы пытаетесь сделать, потому что это не тот фильтр, просто получите логический фильтр должен получить выражение, которое будет зацикливаться на нем для фильтрации данных .

посмотрите на этот пример (я не думаю, что вы хотите этот, но, возможно, он может дать вам подсказку):

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

Надеюсь, это поможет

...