Sorry I must have combined multiple attempts into one example.  When you 
say expire the relationship, what do you mean?


On Thursday, October 27, 2016 at 4:30:36 PM UTC-4, Mike Bayer wrote:
>
> Hello - 
>
>
> I've rebuilt your fragment into a full example in order to determine 
> what the behavior is here, as make_transient() has no defined behavior 
> for loaded relationships. 
>
> Your error does not reproduce with your code fragment as given, because 
> you are setting the list of items to itself, and this means there is no 
> history at all; the unit of work will ignore it. 
>
> Setting the list to a series of three brand new secondary items produces 
> the error you see because this generates deletion events for the 
> existing objects which fail because the state of the object is transient. 
>
> The solution is to expire the relationship attribute first so that it is 
> reset for the transient state. 
>
>
>
>
> On 10/27/2016 03:43 PM, Colton Allen wrote: 
> > I want to create a new row with all of the same data.  However, (using 
> > make_transient) the many-to-many "items" relationship doesn't carry over 
> > to the new model.  When I manually set the items I recieve a 
> > "StaleDataError".  How can I insert the many-to-many relationships so 
> > this does not happen? 
> > * 
> > * 
> > * 
> > My code:* 
> > 
> > class Test(Model): 
> >     id = Column(Integer, primary_key=True) 
> >     items = orm.relationship('ItemModel', secondary=test_item_table) 
> > 
> > 
> > model = Test.query.first() 
> > list_of_items = model.items.copy() 
> > 
> > make_transient(model) 
> > model.id = None 
> > model.items = list_of_items 
> > 
> > session.add(model) 
> > session.commit() 
> > 
> > # sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 
> > 'test_item' expected to delete 1 row(s); Only 0 were matched. 
> > 
> > -- 
> > 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] <javascript:> 
> > <mailto:[email protected] <javascript:>>. 
> > To post to this group, send email to [email protected] 
> <javascript:> 
> > <mailto:[email protected] <javascript:>>. 
> > 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.

Reply via email to