On Jul 27, 2011, at 5:52 AM, King Simon-NFHD78 wrote:
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]]
>> On Behalf Of Gunnlaugur Briem
>> Sent: 27 July 2011 10:36
>> To: [email protected]
>> Subject: Re: RE: [sqlalchemy] Updating records in table not working
>>
>> On Wednesday, 27 July 2011 08:23:14 UTC, Simon King wrote:
>>
>> > I've looked at the SA documentation and as far as I can see
>> the 'add'
>> > does an insert or an update.
>>
>> I think this is incorrect - 'add' always corresponds to
>> 'INSERT'
>>
>> Only for brand new instances, not associated with a session. For
>> *detached* instances the identity is known and the instances will be
>> in session but not in session.new, so an UPDATE will be issued.
>>
>> Regards,
>>
>> - Gulli
>>
>
> Ah, I see. Thanks for the clarification.
Whether the object has a "key" or not is what decides between it being
"transient->pending" or "detached->persistent" once add()-ed back to the
session:
from sqlalchemy.orm import attributes
attributes.instance_state(myobject).key is not None
where instance_state() is going to give you the "._sa_instance_state" attribute
we stick on there, but we keep access through the public function.
The ".key" is stuck on the object after it gets through a flush(), or when we
construct it from an incoming row. Otherwise there is not a ".key" and the
object is transient->pending.
We originally had save() and update() because we copied Hibernate's scheme
exactly, as well as save_or_update() which in Hibernate's case does a "guess".
In SQLAlchemy we have it much easier due to Python's open ended nature, we
just check if we put a "key" or not. So we just made it add() to simplify.
>
> Cheers,
>
> Simon
>
> --
> 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.
>
--
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.