I fixed one that caused a test failure in proxy_engine; patch is attached.
But I haven't been able to figure out this other one from cascade.py . What is happening is that after the first test (the last test in the code, but the first in unittest) runs, and its tearDownAll method runs metadata.drop_all(), the engine thinks the users and prefs tables still exist. So when create_all gets run for the other set of tests, we have a problem, b/c both tests have a table called users. So create_all says "oh, you already exist, I can skip you." But it really doesn't exist; the insert fails. (Also, issuing a 2nd, identical drop command throws a table-does-not-exist exception.)
I tried to duplicate this ghost table effect outside of SA and failed. But here is a shorter SA script that demonstrates the problem:
from sqlalchemy import *
db = create_engine('sqlite:///:memory:')
md = BoundMetaData(db)
users = Table('users', md,
Column('id', Integer, Sequence('user_id_seq', optional=True), primary_key = True),
Column('name', String(40)),
)
md.create_all()
md.drop_all ()
md.drop_all()
Traceback (most recent call last):
File "test3.py", line 13, in ?
md.drop_all()
File "./lib/sqlalchemy\schema.py", line 663, in drop_all
engine.run_callable (do)
File "./lib/sqlalchemy\engine\base.py", line 452, in run_callable
return callable_(conn, *args, **kwargs)
File "./lib/sqlalchemy\schema.py", line 662, in do
conn.drop(table)
File "./lib/sqlalchemy\engine\base.py", line 297, in drop
return self.__engine.drop(entity, connection=self, **kwargs)
File "./lib/sqlalchemy\engine\base.py", line 398, in drop
self._run_visitor( self.dialect.schemadropper, entity, connection=connection, **kwargs)
File "./lib/sqlalchemy\engine\base.py", line 419, in _run_visitor
element.accept_schema_visitor(visitorcallable(self, conn.proxy, **kwargs))
File "./lib/sqlalchemy\schema.py", line 191, in accept_schema_visitor
return visitor.visit_table(self)
File "./lib/sqlalchemy\ansisql.py", line 678, in visit_table
self.execute ()
File "./lib/sqlalchemy\engine\base.py", line 681, in execute
return self.proxy(self.buffer.getvalue(), None)
File "./lib/sqlalchemy\engine\base.py", line 350, in proxy
return self._execute_raw(statement, parameters)
File "./lib/sqlalchemy\engine\base.py", line 315, in _execute_raw
self._execute(cursor, statement, parameters, context=context)
File "./lib/sqlalchemy\engine\base.py", line 334, in _execute
raise exceptions.SQLError(statement, parameters, e)
sqlalchemy.exceptions.SQLError: (OperationalError) no such table: users '\nDROP TABLE users' ()
windows1.patch
Description: Binary data
Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________ Sqlalchemy-users mailing list Sqlalchemy-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users