Should the session.update call raise an error?
-----------------------------------------------------------------------------------------------
import sqlalchemy as sa
engine = sa.create_engine('sqlite:///')
metadata = sa.BoundMetaData(engine)
usersTable = sa.Table('users', metadata,
sa.Column('id', sa.Integer, primary_key=True),
sa.Column('name', sa.String(100))
)
usersTable.create()
class User(object):
def __init__(self, id, name):
self.id = id
self.name = name
sa.mapper(User, usersTable)
session = sa.create_session(bind_to=engine)
user = User(42, 'douglas')
session.save(user)
session.flush()
for u in session.query(User).select():
print u.id, u.name
user = session.query(User).get(42)
user.id = 1
session.update(user)
session.flush()
for u in session.query(User).select():
print u.id, u.name
-----------------------------------------------------------------------------------------------
The log system (toggled with echo=true on the engin creation) show me
that
session.update is a no-op
-----------------------------------------------------------------------------------------------
2006-12-28 13:13:44,509 INFO sqlalchemy.engine.base.Engine.0x..14 BEGIN
2006-12-28 13:13:44,551 INFO sqlalchemy.engine.base.Engine.0x..14
COMMIT
-----------------------------------------------------------------------------------------------
If I change my code to:
-----------------------------------------------------------------------------------------------
user = session.query(User).get(42)
user.id = 1
user.name = 'zaphod'
session.update(user)
session.flush()
-----------------------------------------------------------------------------------------------
I obtain:
-----------------------------------------------------------------------------------------------
Traceback (most recent call last):
sqlalchemy.exceptions.ConcurrentModificationError: Updated rowcount 0
does not match number of objects updated 1
-----------------------------------------------------------------------------------------------
I miss something... can you help me?
thanks in advance
david
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---