- changed status to resolved
sql server self-referential FK repeated in multple schemas doubles columns up
Issue #4060
resolved
from sqlalchemy import *
e = create_engine("mssql+pymssql://scott:tiger^5HHH@mssql2017:1433/test", echo=True)
metadata = MetaData()
users = Table(
'users', metadata,
Column('user_id', Integer, primary_key=True),
Column('parent_user_id', Integer,
ForeignKey('users.user_id',
name='user_id_fk')),
)
users = Table(
'users', metadata,
Column('user_id', Integer, primary_key=True),
Column('parent_user_id', Integer,
ForeignKey('test_schema.users.user_id',
name='user_id_fk')),
schema="test_schema",
)
metadata.create_all(e)
insp = inspect(e)
print insp.get_foreign_keys("users", schema="test_schema")
output:
[{'referred_table': u'users', 'referred_columns': [u'user_id', u'user_id'], 'referred_schema': u'scott', 'name': u'user_id_fk', 'constrained_columns': [u'parent_user_id', u'parent_user_id']}]
this has to do with the join of key_constraints to itself, needs to include table_schema.
Comments (1)
-
reporter - Log in to comment
Join key_constraints on schema as well for SQL server get_fks
Fixed bug where the SQL Server dialect could pull columns from multiple schemas when reflecting a self-referential foreign key constraint, if multiple schemas contained a constraint of the same name against a table of the same name.
Tests are part of standard suite already (CI has been disabled)
Change-Id: I04ff4a5dea9b82c8e517b3700a28fe994b5550f3 Fixes:
#4060→ <<cset 43447c4254f0>>