From: Mike Bayer Date: Sun, 1 Jan 2012 16:21:29 +0000 (-0500) Subject: - [bug] Fix bug where create_table() didn't X-Git-Tag: rel_0_1_1~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69c9303e6037985fc0664bd583ee51f2b937ff72;p=thirdparty%2Fsqlalchemy%2Falembic.git - [bug] Fix bug where create_table() didn't handle self-referential foreign key correctly [#17] --- diff --git a/CHANGES b/CHANGES index 6e5073c7..0263e247 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,10 @@ referenced table in the list of "to remove". [#16] +- [bug] Fix bug where create_table() didn't + handle self-referential foreign key + correctly [#17] + 0.1.0 ===== - Initial release. Status of features: diff --git a/alembic/op.py b/alembic/op.py index 4f3423d9..846e68f4 100644 --- a/alembic/op.py +++ b/alembic/op.py @@ -90,7 +90,7 @@ def _ensure_table_for_fk(metadata, fk): rel_t = schema.Table(tname, metadata, schema=sname) else: rel_t = metadata.tables[table_key] - if not rel_t.c.contains_column(cname): + if cname not in rel_t.c: rel_t.append_column(schema.Column(cname, NULLTYPE)) def rename_table(old_table_name, new_table_name, schema=None): diff --git a/tests/test_op.py b/tests/test_op.py index bc20d80e..fe8bf296 100644 --- a/tests/test_op.py +++ b/tests/test_op.py @@ -201,6 +201,21 @@ def test_drop_table(): "DROP TABLE tb_test" ) +def test_create_table_selfref(): + context = op_fixture() + op.create_table( + "some_table", + Column('id', Integer, primary_key=True), + Column('st_id', Integer, ForeignKey('some_table.id')) + ) + context.assert_( + "CREATE TABLE some_table (" + "id INTEGER NOT NULL, " + "st_id INTEGER, " + "PRIMARY KEY (id), " + "FOREIGN KEY(st_id) REFERENCES some_table (id))" + ) + def test_create_table_fk_and_schema(): context = op_fixture() op.create_table(