Python 由于具有双主键,无法映射ForeignKey
我正在尝试从现有数据动态创建表……但是,我需要的表有两个主键。我找不到如何满足这些限制 也就是说,我从以下两个表格开始Python 由于具有双主键,无法映射ForeignKey,python,sql-server,sqlalchemy,pymssql,Python,Sql Server,Sqlalchemy,Pymssql,我正在尝试从现有数据动态创建表……但是,我需要的表有两个主键。我找不到如何满足这些限制 也就是说,我从以下两个表格开始 self.DDB_PAT_BASE = Table('DDB_PAT_BASE', METADATA, Column('PATID', INTEGER(), primary_key=True), Column('PATDB', INTEGER(), primary_key=True), Column('FAMILYID', INTEGER()), )
self.DDB_PAT_BASE = Table('DDB_PAT_BASE', METADATA,
Column('PATID', INTEGER(), primary_key=True),
Column('PATDB', INTEGER(), primary_key=True),
Column('FAMILYID', INTEGER()),
)
self.DDB_ERX_MEDICATION_BASE = Table('DDB_ERX_MEDICATION_BASE', METADATA,
Column('ErxID', INTEGER(), primary_key=True),
Column('ErxGuid', VARCHAR(length=36)),
Column('LastDownload', DATETIME()),
Column('LastUpload', DATETIME()),
Column('Source', INTEGER()),
)
当我尝试以下方法时,它是有效的
t = Table('testtable', METADATA,
Column('ErxID', INTEGER(), ForeignKey('DDB_ERX_MEDICATION_BASE.ErxID')),
)
t.create()
但是,以下两项都给出了错误…t = Table('testtable', METADATA,
Column('PATID', INTEGER(), ForeignKey('DDB_PAT_BASE.PATID')),
)
t.create()
t = Table('testtable', METADATA,
Column('PATID', INTEGER(), ForeignKey('DDB_PAT_BASE.PATID')),
Column('PATDB', INTEGER(), ForeignKey('DDB_PAT_BASE.PATDB')),
)
t.create()
您指向的表具有复合主键,而不是多个主键。因此。您需要创建复合外键,而不是指向复合主键每一半的两个外键:
t = Table('testtable', METADATA,
Column('PATID', INTEGER()),
Column('PATDB', INTEGER()),
ForeignKeyConstraint(['PATID', 'PATDB'], ['DDB_PAT_BASE.PATID', 'DDB_PAT_BASE.PATDB']),
)
t.create()
t = Table('testtable', METADATA,
Column('PATID', INTEGER()),
Column('PATDB', INTEGER()),
ForeignKeyConstraint(['PATID', 'PATDB'], ['DDB_PAT_BASE.PATID', 'DDB_PAT_BASE.PATDB']),
)
t.create()