[Sqlalchemy-tickets] Issue #2965: foreign_keys logic with overlapping composite foreign keys (zzzee
Brought to you by:
zzzeek
|
From: Mike B. <iss...@bi...> - 2014-02-19 19:04:15
|
New issue 2965: foreign_keys logic with overlapping composite foreign keys https://bitbucket.org/zzzeek/sqlalchemy/issue/2965/foreign_keys-logic-with-overlapping Mike Bayer: ``` #!python from sqlalchemy import * from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import * Base = declarative_base() class User(Base): __tablename__ = "user" uid = Column(String(600), primary_key=True) oid = Column(String(100), primary_key=True) name = Column(String(600), nullable=False) lastname = Column(String(600), nullable=False) class Bet(Base): __tablename__ = "bet" __table_args__ = ( ForeignKeyConstraint(("uid", "oid"), ("user.uid", "user.oid")), ForeignKeyConstraint(("loader_uid", "oid"), ("user.uid", "user.oid")), ) id = Column(Integer, autoincrement=True, primary_key=True) uid = Column(String(600), nullable=False) oid = Column(String(100), nullable=False) runner = relationship("User", # passes #primaryjoin="and_(foreign(Bet.uid)==User.uid, foreign(Bet.oid)==User.oid)", # fails foreign_keys=[loader_uid, oid] ) loader = relationship("User", # passes #primaryjoin="and_(foreign(Bet.loader_uid)==User.uid, foreign(Bet.oid)==User.oid)", # fails foreign_keys=[loader_uid, oid] ) ``` |