from sqlobject import * from sqlobject.tests.dbtest import * class TestCyclicReferenceA(SQLObject): class sqlmeta(sqlmeta): idName = 'test_id_here' table = 'test_cyclic_reference_a_table' name = StringCol() number = IntCol() time = DateTimeCol() short = StringCol(length=10) blobcol = BLOBCol() fkeyb = ForeignKey('TestCyclicReferenceB') class TestCyclicReferenceB(SQLObject): class sqlmeta(sqlmeta): idName = 'test_id_here' table = 'test_cyclic_reference_b_table' name = StringCol() number = IntCol() time = DateTimeCol() short = StringCol(length=10) blobcol = BLOBCol() fkeya = ForeignKey('TestCyclicReferenceA') def test_cyclic_reference(): conn = getConnection() TestCyclicReferenceA.setConnection(conn) TestCyclicReferenceB.setConnection(conn) TestCyclicReferenceA.dropTable(ifExists=True, cascade=True) assert not conn.tableExists(TestCyclicReferenceA.sqlmeta.table) TestCyclicReferenceB.dropTable(ifExists=True, cascade=True) assert not conn.tableExists(TestCyclicReferenceB.sqlmeta.table) constraints = TestCyclicReferenceA.createTable(ifNotExists=True, applyConstraints=False) assert conn.tableExists(TestCyclicReferenceA.sqlmeta.table) constraints += TestCyclicReferenceB.createTable(ifNotExists=True, applyConstraints=False) assert conn.tableExists(TestCyclicReferenceB.sqlmeta.table) for constraint in constraints: conn.query(constraint) TestCyclicReferenceA.dropTable(ifExists=True, cascade=True) assert not conn.tableExists(TestCyclicReferenceA.sqlmeta.table) TestCyclicReferenceB.dropTable(ifExists=True, cascade=True) assert not conn.tableExists(TestCyclicReferenceB.sqlmeta.table)