Then I'm not understanding the question, or at least why make_transient is not working for you. make_transient just sets the state of the existing object to be a new row, essentially. No new self is created (unless I am seriously forgetting how it works, don't have the code in front of me) which seems like what you are asking for.
On Sat, Jun 23, 2018, 6:03 AM Dave von Umlaut <[email protected]> wrote: > I don't mind using merge()… My problem is that using the code linked > above, I cannot seem to make it to keep the original `self` (it invariably > gets replaced by the new persisted object). > > I'm happy with a shallow copy of the object (I handle the relationship > separately). My next plan is literally to duplicate the DB row… > > On Saturday, 23 June 2018 02:35:39 UTC+9, Mike Bayer wrote: >> >> There's no shortcut outside of merge () for copying attributes, copies >> are hard to generalize so you probably want to put copy constructors on >> your classes if you need to do that often. >> >> On Fri, Jun 22, 2018, 1:24 PM Jonathan Vanasco <[email protected]> >> wrote: >> >>> >>> FWIW, i use these methods in my base class to copy the object into a >>> dict. >>> >>> >>> def columns_as_dict(self): >>> """ >>> Beware: this function will trigger a load of attributes if they >>> have not been loaded yet. >>> """ >>> return dict((col.name, getattr(self, col.name)) >>> for col >>> in sqlalchemy.orm.class_mapper(self.__class__). >>> mapped_table.c >>> ) >>> >>> >>> def loaded_columns_as_dict(self): >>> """ >>> This function will only return the loaded columns as a dict. >>> """ >>> _dict = self.__dict__ >>> return {col.name: _dict[col.name] >>> for col in sqlalchemy.orm.class_mapper(self.__class__). >>> mapped_table.c >>> if col.name in _dict >>> } >>> >>> >>> >>> -- >>> 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 [email protected]. >>> To post to this group, send email to [email protected]. >>> 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 [email protected]. > To post to this group, send email to [email protected]. > 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
