Предположим, у нас есть база данных PostgreSQL с двумя таблицами A, B.
table A columns: id, name table B columns: id, name, array_a
Столбец array_a
в таблице B содержит массив идентификаторов переменной длины из таблицы A. В SQLAlchemy у нас есть два класса, которые моделируют эти таблицы, скажем, классы A и B.
Следующее отлично работает, чтобы получить все объекты A, которые ссылается на объект B:
session.query(A).join(B, A.id == func.any(B.array_a)).filter(B.id == <id>).all()
Как мы можем создать связь в B, ссылаясь на объекты A, соответствующие массиву? Пробовал компараторы столбцов, используя func.any
выше, но он жалуется, что ANY(array_a)
не является столбцом в модели. Указание условий первичного соединения, как указано выше, также не помогает.