On Mar 22, 2011, at 4:09 PM, Jay Pipes wrote:

>> Running with "sqlite3" executes a brand new process with all new state, 
>> whereas using "engine" uses a SQLite connection that has remained 
>> established throughout the entire conversation.
> 
> That was my whole point, Michael. Why doesn't the engine show the
> changes that were made to the SQLite database, but it *does* show the
> changes that were made to the MySQL database? Is this a case of the
> SQLite engine and MySQL engines differing on how they cache metadata?

if you mean DBAPI + client libraries, that is what is suspected here.  If you 
mean the SQLAlchemy engine, no, SQLAlchemy does not cache anything regarding 
table metadata, except for what's in the Table object itself.

> 
>> Did you run with echo='debug' yet ?
> 
> Yes. It just shows a bunch of PRAGMA statements when run with SQLite
> and SHOW CREATE TABLE statements when run with MySQL.

"debug" also shows the rows received directly from the backend.   You would see 
a row for each column reflected.   The symptom would be that the "type" row is 
missing.  You can then report the issue to Pysqlite and/or to the Python 
bugtracker.   Assuming this is all the case though, its very likely this is a 
known behavior of the SQLite client library.   

A workaround for your specific test would be to use NullPool with 
create_engine() so that a new connection is procured for each engine.execute().


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to