]> 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:32:05 +0000 (17:32 -0400)
in-python only cols

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

index c1c546d843932d7cd9a530aaaff8076fd7c4a9e7..4581248932578db43387d3c9eee29bdeb40dbb02 100644 (file)
@@ -470,6 +470,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
@@ -514,5 +516,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 5aa1f7a3dabcfe2f3236cbd39cc3ab2dd8a6e9d4..84a317dd45442e6548ebc537ac5888ea376fb385 100644 (file)
@@ -1425,11 +1425,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)