sql >> データベース >  >> RDS >> PostgreSQL

SQLAlchemy1つのマップされたクラスの複数の外部キーを同じ主キーに

    引用符をforeign_keysから削除し、それらをリストにしてみました。 Relationship Configuration: Handling Multiple Join Pathsに関する公式ドキュメントから

    バージョン0.8で変更:relationship() foreign_keysに基づいて、外部キーターゲット間のあいまいさを解決できます 引数のみ;primaryjoin この状況では、議論はもはや必要ありません。

    以下の自己完結型コードは、sqlalchemy>=0.9で機能します :

    from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
    from sqlalchemy.orm import relationship, scoped_session, sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    engine = create_engine(u'sqlite:///:memory:', echo=True)
    session = scoped_session(sessionmaker(bind=engine))
    Base = declarative_base()
    
    #The business case here is that a company can be a stakeholder in another company.
    class Company(Base):
        __tablename__ = 'company'
        id = Column(Integer, primary_key=True)
        name = Column(String(50), nullable=False)
    
    class Stakeholder(Base):
        __tablename__ = 'stakeholder'
        id = Column(Integer, primary_key=True)
        company_id = Column(Integer, ForeignKey('company.id'), nullable=False)
        stakeholder_id = Column(Integer, ForeignKey('company.id'), nullable=False)
        company = relationship("Company", foreign_keys=[company_id])
        stakeholder = relationship("Company", foreign_keys=[stakeholder_id])
    
    Base.metadata.create_all(engine)
    
    # simple query test
    q1 = session.query(Company).all()
    q2 = session.query(Stakeholder).all()
    


    1. Moodle用のPostgreSQLを監視するためのヒント

    2. SQL Server Management Studio(SSMS)でカスタムショートカットを作成する方法-SQL Server/TSQLチュートリアルパート10

    3. OracleCloudPlatform上のOracleDatabase12cでのOracleJDeveloper12cの使用、パート2

    4. PerconaXtraDBクラスターを8.0にアップグレードするためのヒント