У меня есть два класса, сопоставленные с двумя таблицами соответственно.SQLAlchemy Linear One-to-One Relationship
Пример: Obj 1: ID (PK), KEY (String(20))
Obj 2: ID (PK), obj_1_id (FK), value (String(20))
Я хотел бы иметь возможность выполнять obj_1.value = *val*
, в результате чего вал хранится на соответствующем столбце таблицы secon'd, вместо obj_1.value.value = val `.
- Как создать такие отношения, разложить/сопоставить столбцам двух таблиц?
То, что я хочу не один-к-одному (объект имеет объект), а карта столбца объекта в другую таблицу.
Ниже я попробовал (после Docs), и он не работает, поскольку он создает obj1.value.value = ..
вместо прямого отображения столбца
То, что я пробовал:
class Obj1(Base):
__tablename__ == ...
id = ..
key = ..
value = relationship("Obj2", uselist=False, backref="obj1")
class Obj2(Base):
__tablename__ == ...
id = .. # PK
obj_1_id = .. # FK
value = ...
Благодарим вас за это решение. Он решает проблему, но чувствует себя немного сложным. Должен ли быть (или нет) более простой способ сделать такое сопоставление с SA? – Phil
Вы можете написать собственный конструктор/оболочку, чтобы скрыть всю сложность. – van