如何在没有数据库查询的情况下查找sql​​alchemy远程端对象的类或类名?

mdo*_*dob 7 python sqlalchemy class relationship relation

让我们有一个类X和Y以及它们之间的关系x2y和y2x.从class_mapper(Class).iterate_properties迭代器我们可以得到所有类的属性.所以x2y和y2x是RelationshipProperty,我希望得到的是关系的远端一侧的对象的类或类名.

我已经尝试过解决方案了.我发现x2y.remote_side[0].table.name,制作了一个table_map,它将一个表名映射到一个类,它适用于一对多和一对一.如果我将它用于多对多,则表名是关联表.

关于如何获得远程边课的任何提示?

zzz*_*eek 20

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
Run Code Online (Sandbox Code Playgroud)