]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Support for reflection of the "name" of primary key
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 10 Nov 2012 20:37:51 +0000 (15:37 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 10 Nov 2012 20:37:51 +0000 (15:37 -0500)
constraints added, courtesy Dave Moore. mssql [ticket:2600]

doc/build/changelog/changelog_08.rst
lib/sqlalchemy/dialects/mssql/base.py
test/requirements.py

index e10780c83c5e459de80a9929a389e085b07c98b4..7f1b1d0fdcf33879d5554060578eb5c4c78a7738 100644 (file)
         since 0.7 doesn't respect the ".key" in a wider
         range of scenarios.
 
+    .. change::
+        :tags: mssql, feature
+        :tickets: 2600
+
+        Support for reflection of the "name" of primary key
+        constraints added, courtesy Dave Moore.
+
 .. changelog::
     :version: 0.8.0b1
     :released: October 30, 2012
index 51884247f9174fc0ff477369540886baac377d1f..f9b7b944ce434d2ecf450ba85916c5ef7b6dd5fc 100644 (file)
@@ -1415,17 +1415,20 @@ class MSDialect(default.DefaultDialect):
         C = ischema.key_constraints.alias('C')
 
         # Primary key constraints
-        s = sql.select([C.c.column_name, TC.c.constraint_type],
+        s = sql.select([C.c.column_name, TC.c.constraint_type, C.c.constraint_name],
             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)
         )
         c = connection.execute(s)
+        constraint_name = None
         for row in c:
             if 'PRIMARY' in row[TC.c.constraint_type.name]:
                 pkeys.append(row[0])
-        return {'constrained_columns': pkeys, 'name': None}
+                if constraint_name is None:
+                    constraint_name = row[C.c.constraint_name.name]
+        return {'constrained_columns': pkeys, 'name': constraint_name}
 
     @reflection.cache
     @_db_plus_owner
index b88b774322f60e6f33add88af21182df091cf138..736c0010809c4da34c8d20554277caf6a698dd74 100644 (file)
@@ -372,7 +372,7 @@ class DefaultRequirements(SuiteRequirements):
     def reflects_pk_names(self):
         """Target driver reflects the name of primary key constraints."""
 
-        return fails_on_everything_except('postgresql', 'oracle')
+        return fails_on_everything_except('postgresql', 'oracle', 'mssql')
 
     @property
     def python2(self):