diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2020-10-26 14:29:12 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-10-26 14:29:12 +0000 |
| commit | 8d588b06d984cb053be53e779cfa11b1d5166f03 (patch) | |
| tree | d3b0ed94f321eda4a0a14000ebe99c60c5984fa0 /lib/sqlalchemy/dialects | |
| parent | a1c51879aeb7811a23e454d2e90ad3bbae92b7a1 (diff) | |
| parent | 7937a409f9e685341b6a5b8385491befe0aaa4d4 (diff) | |
| download | sqlalchemy-8d588b06d984cb053be53e779cfa11b1d5166f03.tar.gz | |
Merge "Correct reflection for composite primary keys"
Diffstat (limited to 'lib/sqlalchemy/dialects')
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 22 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/sqlite/base.py | 1 |
2 files changed, 14 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 diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py index 8ef35514a..8a4fbe8e5 100644 --- a/lib/sqlalchemy/dialects/sqlite/base.py +++ b/lib/sqlalchemy/dialects/sqlite/base.py @@ -1853,6 +1853,7 @@ class SQLiteDialect(default.DefaultDialect): constraint_name = result.group(1) if result else None cols = self.get_columns(connection, table_name, schema, **kw) + cols.sort(key=lambda col: col.get("primary_key")) pkeys = [] for col in cols: if col["primary_key"]: |
