Со следующими таблицами и сопоставлениями
class A:
def __init__(self):
self.id = None
self.b_ids = {}
self.b_s = {}
class B:
def __init__ (self):
self.id = None
self.a_id = None
self.a = None
a = Table('t_a', meta,
Column('id',Integer, autoincrement=True, primary_key=True),
)
b = Table('t_b', meta,
Column('id',Integer, autoincrement=True, primary_key=True),
Column('a_id', Integer, ForeignKey('t_a.id')),
)
mapper(A, a)
mapper(B, b, properties={'a' : relationship(A, backref="b_s")})
Когда я загружаю 'A', я могу получить связанные объекты 'B' в свойстве 'b_s'. Но то, что я хочу, это список идентификаторов связанных B в свойстве A.b_ids. Есть ли способ сделать это?
Я пытался:
mapper(A, a, properties={'b_ids' :
column_property(select(
[b.c.id],
a.c.id==b.c.a_id))
})
Но выдает ошибку: «ProgrammingError: (ProgrammingError) более одной строки, возвращенной подзапросом, используемым в качестве выражения»