Commits

Mike Bayer  committed 2008344

plus some more adjustments for mysql, or in general if an Index refers to
in-python only cols

  • Participants
  • Parent commits 573b542
  • Branches rel_0_8

Comments (0)

Files changed (2)

File lib/sqlalchemy/engine/reflection.py

         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
                     "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))

File test/engine/test_reflection.py

             '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)