On Thu, Jan 4, 2018 at 11:08 AM,  <jens.troe...@gmail.com> wrote:
> Thank you Mike!
>
> So suppose I have an a Manager object manager and I wanted to promote that
> to Engineer:
>
> # Modify the persisted data of the manager object in the db directly.
> session = object_session(manager)
> session.execute(manager.__table__.update() \
>                                  .where(manager.__table__.c.id ==
> manager.id) \
>                                  .values({'type': 'engineer'}))
> # session.flush() ?
>
> # Expunge the object.
> session.expunge(manager)
>
> # Subsequent reads would then return Engineer objects…
>
> I suspect that modifying the object directly would not work with expunge().
> However, if I wouldn't expunge() and all I do is modify the object then
> perhaps that's ok?

you'd have to reassign the class, e.g. manager.__class__ = Engineer.
 You can try all that but I can't guarantee everything will always
work, not really sure.


>
> # Modify the object's type directly, then manager's class would not be
> accurate anymore.
> manager.type = "engineer"
>
> Also, if for some reason the session were to rollback() then the above
> execute() would not be persisted and manager remain a manager. Correct?

in the database, sure.  if you modified the class of your object, that
would still be there.   it would get pretty broken quick.



>
> Thanks!
> Jens
>
>
> On Thursday, August 10, 2017 at 5:25:37 PM UTC+2, Mike Bayer wrote:
>>
>> > Talking about the example in the documentation, do I understand you
>> > correctly that changing from Manager to Engineer is as simple as
>> > updating
>> > the type field?
>>
>> yes.   also locally you want to clear out those objects from your
>> Session and reload (cleanest would be to expunge() totally).
>>
> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full
> description.
> ---
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to