I can not get versioning to work in Oracle (it does work for me in sqlite
and Postgresql just changing the connect string).
I am using timestamp with time zones for the version_id_col. Can anyone
verify that this does work.
SQLAlchemy==0.7.8
cx-Oracle==5.1.2
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
>>> import ver.models as m; import transaction
>>> s = m.DBSession()
>>> i = s.query(m.MyModel).first()
2012-07-19 22:32:54,807 INFO [sqlalchemy.engine.base.Engine][MainThread]
SELECT USER FROM DUAL
2012-07-19 22:32:54,807 INFO [sqlalchemy.engine.base.Engine][MainThread] {}
2012-07-19 22:32:54,818 INFO [sqlalchemy.engine.base.Engine][MainThread]
BEGIN (implicit)
2012-07-19 22:32:54,819 INFO [sqlalchemy.engine.base.Engine][MainThread]
SELECT models_id, models_name, models_value, models_ins_upd_timestamp
FROM (SELECT models.id AS models_id, models.name AS models_name,
models.value AS models_value, models.ins_upd_timestamp AS
models_ins_upd_timestamp
FROM models)
WHERE ROWNUM <= :ROWNUM_1
2012-07-19 22:32:54,819 INFO [sqlalchemy.engine.base.Engine][MainThread]
{'ROWNUM_1': 1}
>>> i.value += 1
>>> transaction.commit()
2012-07-19 22:33:18,656 INFO [sqlalchemy.engine.base.Engine][MainThread]
UPDATE models SET value=:value, ins_upd_timestamp=:ins_upd_timestamp WHERE
models.id = :models_id AND models.ins_upd_timestamp =
:models_ins_upd_timestamp
2012-07-19 22:33:18,656 INFO [sqlalchemy.engine.base.Engine][MainThread]
{'ins_upd_timestamp': datetime.datetime(2012, 7, 19, 22, 33, 18, 655856),
'models_ins_upd_timestamp': datetime.datetime(2012, 7, 19, 22, 31, 46,
814740), 'value': 2, 'models_id': 1}
2012-07-19 22:33:18,659 INFO [sqlalchemy.engine.base.Engine][MainThread]
ROLLBACK
Traceback (most recent call last):
File "<console>", line 1, in <module>
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/transaction-1.3.0-py2.6.egg/transaction/_manager.py",
line 107, in commit
return self.get().commit()
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/transaction-1.3.0-py2.6.egg/transaction/_transaction.py",
line 354, in commit
reraise(t, v, tb)
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/transaction-1.3.0-py2.6.egg/transaction/_transaction.py",
line 345, in commit
self._commitResources()
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/transaction-1.3.0-py2.6.egg/transaction/_transaction.py",
line 493, in _commitResources
reraise(t, v, tb)
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/transaction-1.3.0-py2.6.egg/transaction/_transaction.py",
line 465, in _commitResources
rm.tpc_begin(self)
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/zope.sqlalchemy-0.7.1-py2.6.egg/zope/sqlalchemy/datamanager.py",
line 86, in tpc_begin
self.session.flush()
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-i686.egg/sqlalchemy/orm/session.py",
line 1583, in flush
self._flush(objects)
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-i686.egg/sqlalchemy/orm/session.py",
line 1654, in _flush
flush_context.execute()
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-i686.egg/sqlalchemy/orm/unitofwork.py",
line 331, in execute
rec.execute(self)
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-i686.egg/sqlalchemy/orm/unitofwork.py",
line 475, in execute
uow
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-i686.egg/sqlalchemy/orm/persistence.py",
line 59, in save_obj
mapper, table, update)
File
"/home/timw/.virtualenvs/sat/lib/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-i686.egg/sqlalchemy/orm/persistence.py",
line 504, in _emit_update_statements
(table.description, len(update), rows))
StaleDataError: UPDATE statement on table 'models' expected to update 1
row(s); 0 were matched.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/sqlalchemy/-/-_uLzovXdkgJ.
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.