我一直在研究sqlalchemy的自我参考表。我已多次阅读文档,但仍然难以理解remote_side
的概念。有人可以画图或用类比来帮助解释这个概念吗?我认为可视化是一种更好的方式,但任何有用的东西都会受到赞赏。感谢。
编辑:顺便说一下,在我看来,remote
这个词有点模糊,因为它可以从不同的角度来解释。与单词left
和rigt
一样,它实际上取决于您面向的方向,right
可能是您的left
。我对此并不是很有信心,但我想从remote_side
到many_side
的名字可能有帮助吗?如果我在这里错了,请纠正我。
答案 0 :(得分:-1)
由于似乎没有人对这样的初学者概念感兴趣,我会尽力去攻击这个。
首先想象两个相同的表,一个在左边,另一个在右边。现在深吸一口气。
通过为外键引用的属性指定remote_side
,您实际建立了从本地到relmote的关系。
现在的问题是,我可以为外键属性本身指定remote_sed
吗?让我们通过做一个实验来看待差异:
class Employee(Base):
__tablename__ = 'employees'
id = Column(Integer(), primary_key=True)
manager_id = Column(Integer(), ForeignKey('employees.id'))
name = Column(String(255), nullable=False)
Manager = relationship("Employee", backref=backref('reports'), remote_side=[manager_id])
运行此操作,我们收到此错误:
sqlalchemy.exc.ArgumentError: Employee.Manager and back-reference Employee.reports are both of the same direction symbol('ONETOMANY'). Did you mean to set remote_side on the many-to-one side ?
显然,这不起作用。我们陷入单向暴政。