Ive booted up my virtual windows machine and it all works for me. note that "dsn" is now the default interpretation of host in 0.5, i.e. connect using mssql://<dsn>. perhaps you've got multiple database instances being accesed across SQLA versions.
On Mar 21, 2009, at 8:01 PM, davidlmontgomery wrote: > > Thanks Mike and Michael for your suggestions. > >> remove() will roll back any existing transaction > > Yes, this is what I am seeing. > >> but the commit() call >> previously will issue a COMMIT for any pending data. > > And this COMMIT is succeeding with 0.4.8, but it is not > succeeding with 0.5.2. > >> the COMMIT will >> show up in your SQL logs so check those out. > > I see the COMMIT in the logs for both 0.4.8 and > 0.5.2. With 0.4.8 it works, and the table is unlocked > immediately after the COMMIT. In 0.5.2, the table > stays locked after the COMMIT, until the call to > session.remove(). Something is going awry with the > 0.5.2 COMMIT. > >> theres no logic in the >> MSSQL engine that would specifically affect this. > > I guess I'll set a breakpoint where I issue the > COMMIT -- or perhaps near where the COMMIT log > message is issued, if I can easily find that -- and see > if I can come to some understanding of the difference. > > Any hints for my spelunking would be appreciated. > If I can't figure it out fairly soon I'll just need to revert > to 0.4.8. > > Here is a revised test script: > > --- test script --- > import datetime > import sqlalchemy > from sqlalchemy.orm import scoped_session, sessionmaker > > print "sqlalchemy version:", sqlalchemy.__version__ > > conn_str = 'mssql://<user>:<password>@<server>/<database>?dsn=<dsn>' > mssql_engine = sqlalchemy.create_engine(conn_str, echo=True) > mssql_metadata = sqlalchemy.MetaData(bind=mssql_engine) > MSSQLSession = scoped_session(sessionmaker(bind=mssql_metadata.bind)) > > data = 'bingo' > now = datetime.datetime.now() > time = now.strftime('%Y-%m-%d %H:%M:%S') > command = "INSERT INTO sa_test (data, time) VALUES ('%s', '%s')" % > (data, time) > > session = MSSQLSession() > session.execute(command) > session.commit() > > command = "SELECT COUNT(*) FROM sa_test WHERE data='%s'" % data > > session = MSSQLSession() > count = session.execute(command).scalar() > print "count:", count > > MSSQLSession.remove() > --- end test script --- > > This gets the same behavior as before. I'm seeing the > same behavior with INSERTs, UPDATEs, and (in the > context of the source application) sprocs that themselves > do a bunch of INSERTs and/or UPDATEs. > > Here are sample runs (I've wrapped the output lines > manually): > > --- first run with 0.5.2 --- > sqlalchemy version: 0.5.2 > 2009-03-21 16:22:51,403 INFO > sqlalchemy.engine.base.Engine.0x...fb30 > BEGIN > 2009-03-21 16:22:51,434 INFO > sqlalchemy.engine.base.Engine.0x...fb30 > INSERT INTO sa_test (data, time) > VALUES ('bingo', '2009-03-21 16:22:51') > 2009-03-21 16:22:51,436 INFO > sqlalchemy.engine.base.Engine.0x...fb30 > [] > 2009-03-21 16:22:51,453 INFO > sqlalchemy.engine.base.Engine.0x...fb30 > COMMIT > 2009-03-21 16:22:51,470 INFO > sqlalchemy.engine.base.Engine.0x...fb30 > BEGIN > 2009-03-21 16:22:51,502 INFO > sqlalchemy.engine.base.Engine.0x...fb30 > SELECT COUNT(*) FROM sa_test WHERE data='bingo' > 2009-03-21 16:22:51,503 INFO > sqlalchemy.engine.base.Engine.0x...fb30 > [] > count: 1 > > [1 would be correct, but table actually still has 0] > > --- second run with 0.5.2 --- > sqlalchemy version: 0.5.2 > 2009-03-21 16:22:53,035 INFO > sqlalchemy.engine.base.Engine.0x...0b30 > BEGIN > 2009-03-21 16:22:53,065 INFO > sqlalchemy.engine.base.Engine.0x...0b30 > INSERT INTO sa_test (data, time) > VALUES ('bingo', '2009-03-21 16:22:52') > 2009-03-21 16:22:53,069 INFO > sqlalchemy.engine.base.Engine.0x...0b30 > [] > 2009-03-21 16:22:53,085 INFO > sqlalchemy.engine.base.Engine.0x...0b30 > COMMIT > 2009-03-21 16:22:53,101 INFO > sqlalchemy.engine.base.Engine.0x...0b30 > BEGIN > 2009-03-21 16:22:53,132 INFO > sqlalchemy.engine.base.Engine.0x...0b30 > SELECT COUNT(*) FROM sa_test WHERE data='bingo' > 2009-03-21 16:22:53,135 INFO > sqlalchemy.engine.base.Engine.0x...0b30 > [] > count: 1 > > [table still has 0 -- 0.5.2 is always rolling back] > > --- first run with 0.4.8 --- > sqlalchemy version: 0.4.8 > 2009-03-21 16:23:46,415 INFO > sqlalchemy.engine.base.Engine.0b30 > BEGIN > 2009-03-21 16:23:46,417 INFO > sqlalchemy.engine.base.Engine.0b30 > INSERT INTO sa_test (data, time) > VALUES ('bingo', '2009-03-21 16:23:46') > 2009-03-21 16:23:46,420 INFO > sqlalchemy.engine.base.Engine.0b30 > {} > 2009-03-21 16:23:46,448 INFO > sqlalchemy.engine.base.Engine.0b30 > COMMIT > 2009-03-21 16:23:46,469 INFO > sqlalchemy.engine.base.Engine.0b30 > BEGIN > 2009-03-21 16:23:46,470 INFO > sqlalchemy.engine.base.Engine.0b30 > SELECT COUNT(*) FROM sa_test WHERE data='bingo' > 2009-03-21 16:23:46,473 INFO > sqlalchemy.engine.base.Engine.0b30 > {} > count: 1 > > [correct: table now does have 1] > > --- first run with 0.4.8 --- > sqlalchemy version: 0.4.8 > 2009-03-21 16:25:27,819 INFO > sqlalchemy.engine.base.Engine.0b30 > BEGIN > 2009-03-21 16:25:27,821 INFO > sqlalchemy.engine.base.Engine.0b30 > INSERT INTO sa_test (data, time) > VALUES ('bingo', '2009-03-21 16:25:27') > 2009-03-21 16:25:27,822 INFO > sqlalchemy.engine.base.Engine.0b30 > {} > 2009-03-21 16:25:27,839 INFO > sqlalchemy.engine.base.Engine.0b30 > COMMIT > 2009-03-21 16:25:27,858 INFO > sqlalchemy.engine.base.Engine.0b30 > BEGIN > 2009-03-21 16:25:27,859 INFO > sqlalchemy.engine.base.Engine.0b30 > SELECT COUNT(*) FROM sa_test WHERE data='bingo' > 2009-03-21 16:25:27,861 INFO > sqlalchemy.engine.base.Engine.0b30 > {} > count: 2 > > [correct: table now does have 2] > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@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 -~----------~----~----~----~------~----~------~--~---