what if you create the same table on a totally new database and run it
there ?


davidlmontgomery wrote:
>
> Thanks Michael for looking into it.
>
> I've verified that I get the same results (works with 0.4.8,
> rolls back with 0.5.2) on two additional Windows client
> machines.  Different OS's and python versions, so it's a
> stable result on my end.
>
> I'm not sure the best way to dig into this further.  I'm going
> to take a look at some tools I saw recommended recently
> for looking at what is going across the wire to see if I can
> learn something there.
>
> (I did try the mssql://<dsn> for 0.5.2, but got the same results.)
>
> David
>
> On Mar 21, 7:45 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
>> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to