Hello, I've been trying to do unit testing with SQLAlchemy and PostgreSQL. In my model/tables I have two entities state and country, state has a foreign key relating to country (no problems there).
In my setUp() method I call create_all() for my metadata while in tearDown() I call drop_all(). The problem that I was detecting is that it nosetests frozes when is dropping the "state" table after running the following test: def test_country_create_orm(self): new_country = Country('Country') id = new_country.id session = Session() session.add(new_country) session.commit() #session.flush() test_country = session.query(Country).get(id) assert test_country.id == id The Session class is generated with sessionmaker() in the following way (where engine is the parameter that is passed on to init_model of Pylons, however I tested the same conditions with create_engine): sm = orm.sessionmaker(bind=engine, autoflush=True, autocommit=False) Session = orm.scoped_session(sm) I chased the problem through a debugger down onto the implementation of do_execute for the cursor for the Connection object for PostgreSQL, after which I strace'd it and discovered that it was being hold on the poll(2) system call. I don't know if I'm doing something wrong but I discovered that my unit tests work if I configure my Session class as: sm = orm.sessionmaker(bind=engine, autoflush=True, autocommit=True) Session = orm.scoped_session(sm) And flush()ing instead of commit()ing. What also works is that if instead of doing the query test_country = session.query(Country).get(id) I do this: count = session.query(Country).count() This doesn't appear to be restricted to the drop_all() method of MetaData. If I import my Table object that represents my "State" table and drop it directly it also freezes: from myapp.model.table import state state.drop() # freezes I have tested this issue with Python 2.6.6, SQLAlchemy 0.6.5 and 0.6.6, psycopg2 2.3.1 and 2.3.2 and PostgreSQL 8.4.5. Any insights? -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.