]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
plus some more adjustments for mysql, or in general if an Index refers to
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 28 Aug 2013 21:31:40 +0000 (17:31 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 28 Aug 2013 21:31:40 +0000 (17:31 -0400)
in-python only cols

lib/sqlalchemy/engine/reflection.py
test/engine/test_reflection.py

index 28494dc7dbc0cc9133db657e05e817146a4a8506..a9ccf55397e5c168e6a60d3a3bdfcf4cea79f92f 100644 (file)
@@ -534,6 +534,8 @@ class Inspector(object):
         fkeys = self.get_foreign_keys(table_name, schema, **tblkw)
         for fkey_d in fkeys:
             conname = fkey_d['name']
+            # look for columns by orig name in cols_by_orig_name,
+            # but support columns that are in-Python only as fallback
             constrained_columns = [
                                     cols_by_orig_name[c].key
                                     if c in cols_by_orig_name else c
@@ -578,5 +580,11 @@ class Inspector(object):
                     "Omitting %s KEY for (%s), key covers omitted columns." %
                     (flavor, ', '.join(columns)))
                 continue
-            sa_schema.Index(name, *[cols_by_orig_name[c] for c in columns],
+            # look for columns by orig name in cols_by_orig_name,
+            # but support columns that are in-Python only as fallback
+            sa_schema.Index(name, *[
+                                cols_by_orig_name[c] if c in cols_by_orig_name
+                                        else table.c[c]
+                                for c in columns
+                        ],
                          **dict(unique=unique))
index 532de1c3599e35d7a0ef61444516e25f5a5370fd..4b8fe8a04c7ef1e557fadbce69088a0e0e8011d0 100644 (file)
@@ -1430,11 +1430,13 @@ class ColumnEventsTest(fixtures.TestBase):
             'to_reflect',
             cls.metadata,
             Column('x', sa.Integer, primary_key=True),
+            test_needs_fk=True
         )
         cls.related = Table(
             'related',
             cls.metadata,
-            Column('q', sa.Integer, sa.ForeignKey('to_reflect.x'))
+            Column('q', sa.Integer, sa.ForeignKey('to_reflect.x')),
+            test_needs_fk=True
         )
         sa.Index("some_index", cls.to_reflect.c.x)
         cls.metadata.create_all(testing.db)