让我们有一个类X和Y以及它们之间的关系x2y和y2x.
从class_mapper(Class).iterate_properties迭代器我们可以得到所有类的属性.
所以x2y和y2x是RelationshipProperty,我希望得到的是关系远端的对象的类或类名.
从class_mapper(Class).iterate_properties迭代器我们可以得到所有类的属性.
所以x2y和y2x是RelationshipProperty,我希望得到的是关系远端的对象的类或类名.
我已经尝试过解决方案了.
我找到了x2y.remote_side [0] .table.name,创建了一个table_map,它将一个表名映射到一个类,它适用于一对多和一对一.如果我将它用于多对多,则表名是关联表.
关于如何获得远程边课的任何提示?
解决方法
X.x2y.property.mapper.class_
relatonshipproperty最终会获得类映射属性文档,就像mapper现在一样.
编辑.这是一个测试,它说明了上面从“X”返回“Y”,并且没有反射不会创建关系,所以应该没有效果:
from sqlalchemy import Column,Integer,ForeignKey from sqlalchemy.orm import relationship from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class X(Base): __tablename__ = 'x' id = Column(Integer,primary_key=True) x2y = relationship("Y") class Y(Base): __tablename__ = 'y' id = Column(Integer,primary_key=True) x_id = Column(Integer,ForeignKey("x.id")) assert X.x2y.property.mapper.class_ is Y