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 <zedrd...@gmail.com> 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 <jona...@findmeon.com> >> 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 sqlalchemy+...@googlegroups.com. >>> To post to this group, send email to sqlal...@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. > -- 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.