On Jan 12, 2011, at 9:08 AM, bool wrote:

> rollback is not working for me. I wrote a small test script that
> inserts two rows, with the second row creating a violation. Upon
> throwing exception, I would expect no rows to be inserted due to
> rollback, but I find that the first insert is persisted. The
> surprising thing is that the echo output clearly says that sqlalchemy
> has rollbacked the transaction. Please help.

The code looks fine.  Note 0.5 has many, many SQL server issues, the dialects 
were largely overhauled in 0.6, though this doesn't look like one of them.   
The test case below also does not illustrate how the first row is still 
present.     If you send more code, a succinct, self-contained script which 
reproduces the issue in any environment would be best.


> 
> 
> ======
> CODE:
> =============================================================================
> 
>    trans = connection.begin()
>    try:
>        ins = table.insert().values(id=122, name='k',
> tt_start='20100101', tt_end='20100101',
>                                              vt_start='20100101',
> vt_end='20100101')
>        connection.execute(ins)
>        ins = table.insert().values(id=121, name='k')
>        connection.execute(ins)
>        trans.commit()
>    except:
>        trans.rollback()
>        raise
> 
> 
> ==========
> OUTPUT:
> ===============================================================================
> 
> [20110112 19:15:51:203 base.py:723 INFO] BEGIN
> INSERT INTO bbb (id, name, tt_start, tt_end, vt_start, vt_end) VALUES
> (?, ?, ?, ?, ?, ?)
> [20110112 19:15:51:205 base.py:945 INFO] INSERT INTO bbb (id, name,
> tt_start, tt_end, vt_start, vt_end) VALUES (?, ?, ?, ?, ?, ?)
> [20110112 19:15:51:205 base.py:946 INFO] [122, 'k', '20100101',
> '20100101', '20100101', '20100101']
> [20110112 19:15:51:502 base.py:945 INFO] INSERT INTO bbb (id, name)
> VALUES (?, ?)
> [20110112 19:15:51:502 base.py:946 INFO] [121, 'k']
> [20110112 19:15:51:531 base.py:733 INFO] ROLLBACK
> Traceback (most recent call last):
>  File "test_trans.py", line 48, in <module>
>    main()
>  File "test_trans.py", line 39, in main
>    t.connection.execute(ins)
>  File "/prod/tools/infra/SQLAlchemy-0.5.5-py2.5.egg/sqlalchemy/engine/
> base.py", line 824, in execute
>    return Connection.executors[c](self, object, multiparams, params)
>  File "/prod/tools/infra/SQLAlchemy-0.5.5-py2.5.egg/sqlalchemy/engine/
> base.py", line 874, in _execute_clauseelement
>    return self.__execute_context(context)
>  File "/prod/tools/infra/SQLAlchemy-0.5.5-py2.5.egg/sqlalchemy/engine/
> base.py", line 896, in __execute_context
>    self._cursor_execute(context.cursor, context.statement,
> context.parameters[0], context=context)
>  File "/prod/tools/infra/SQLAlchemy-0.5.5-py2.5.egg/sqlalchemy/engine/
> base.py", line 950, in _cursor_execute
>    self._handle_dbapi_exception(e, statement, parameters, cursor,
> context)
>  File "/prod/tools/infra/SQLAlchemy-0.5.5-py2.5.egg/sqlalchemy/engine/
> base.py", line 931, in _handle_dbapi_exception
>    raise exc.DBAPIError.instance(statement, parameters, e,
> connection_invalidated=is_disconnect)
> sqlalchemy.exc.IntegrityError: (IntegrityError) ('23000', "[23000]
> [FreeTDS][SQL Server]Cannot insert the value NULL into column
> 'tt_start', table 'IAM_Equities.dbo.bbb'; column does not allow nulls.
> INSERT fails. (515) (SQLExecDirectW)") u'INSERT INTO bbb (id, name)
> VALUES (?, ?)' [121, 'k']
> 
> -- 
> 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.
> 

-- 
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.

Reply via email to