diff options
| author | fulpm <8397318+fulpm@users.noreply.github.com> | 2020-10-20 17:54:50 -0400 |
|---|---|---|
| committer | Gord Thompson <gord@gordthompson.com> | 2020-10-21 17:47:33 -0600 |
| commit | 7937a409f9e685341b6a5b8385491befe0aaa4d4 (patch) | |
| tree | 32205383be2966d9bc59fb47306b65184204e5f2 /lib/sqlalchemy/dialects/mssql | |
| parent | 91e14cc42c3c715f57db7d910761dfd5dd55e2b1 (diff) | |
| download | sqlalchemy-7937a409f9e685341b6a5b8385491befe0aaa4d4.tar.gz | |
Correct reflection for composite primary keys
Fixes: #5661
### Description
Fixes reflection of composite primary keys to maintain the correct column order in the MSSQL
and SQLite dialects.
Closes: #5662
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/5662
Pull-request-sha: b568dec7070b4f3ee46a528bdf16fb237baade2a
Change-Id: I452b23cbf7f389c4a0a34cffce5c32498efe37d2
Diffstat (limited to 'lib/sqlalchemy/dialects/mssql')
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index c8f2b4ca3..a224c00bb 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -3168,15 +3168,19 @@ class MSDialect(default.DefaultDialect): C = ischema.key_constraints.alias("C") # Primary key constraints - s = sql.select( - C.c.column_name, TC.c.constraint_type, C.c.constraint_name - ).where( - sql.and_( - TC.c.constraint_name == C.c.constraint_name, - TC.c.table_schema == C.c.table_schema, - C.c.table_name == tablename, - C.c.table_schema == owner, - ), + s = ( + sql.select( + C.c.column_name, TC.c.constraint_type, C.c.constraint_name + ) + .where( + sql.and_( + TC.c.constraint_name == C.c.constraint_name, + TC.c.table_schema == C.c.table_schema, + C.c.table_name == tablename, + C.c.table_schema == owner, + ), + ) + .order_by(TC.c.constraint_name, C.c.ordinal_position) ) c = connection.execution_options(future_result=True).execute(s) constraint_name = None |
