Worked perfectly.  Thanks for the help.

On Thursday, August 3, 2017 at 11:16:26 AM UTC-7, Mike Bayer wrote:
>
> On Thu, Aug 3, 2017 at 1:37 PM, Colton Allen <[email protected] 
> <javascript:>> wrote: 
> > I've got an event that's trying to update another model with a foreign 
> key 
> > but it's raising a strange error that I'm having trouble debugging. 
> > "AttributeError: 'Join' object has no attribute 'implicit_returning'". 
> > 
> > The query worked in the past (before the OutboundModel became 
> polymorphic). 
> > I'm certain the query in the update event is incorrect but I'm unsure of 
> how 
> > to fix it. 
> > 
> > # Parent polymorphic models 
> > class OutboundModel(Model): 
> >     __tablename__ = 'outbound' 
> > 
> >     id = Column(Integer, primary_key=True) 
> >     driver = Column( 
> >         Enum('default', 'ses', name='outbound_driver'), 
> default='default', 
> >         nullable=False) 
> >     latest_result_id = Column(Integer, ForeignKey('outbound_result.id')) 
>
> >     latest_result = orm.relationship( 
> >         'OutboundResultModel', backref='outbound', 
> >         foreign_keys=[latest_result_id]) 
> > 
> >     __mapper_args__ = { 
> >         'polymorphic_identity': 'default', 
> >         'polymorphic_on': driver, 
> >         'with_polymorphic': '*' 
> >     } 
> > 
> > 
> > class OutboundSESModel(OutboundModel): 
> >     __tablename__ = 'service_outbound_ses' 
> >     __mapper_args__ = {'polymorphic_identity': 'ses'} 
> > 
> >     id = Column(Integer, ForeignKey('outbound.id'), primary_key=True) 
> > 
> > 
> > # Child polymorphic models 
> > class OutboundResultModel(Model): 
> >     __tablename__ = 'outbound_result' 
> > 
> >     id = Column(Integer, primary_key=True) 
> >     driver = Column( 
> >         Enum('a', 'b', name='outbound_result_driver'), default='a', 
> >         nullable=False) 
> >     outbound_id = Column( 
> >         Integer, ForeignKey('outbound.id'), nullable=False) 
> >     outbound = orm.relationship( 
> >         'OutboundModel', backref='results', foreign_keys=[outbound_id]) 
> >     __mapper_args__ = { 
> >         'polymorphic_identity': 'result', 
> >         'polymorphic_on': kind, 
> >         'with_polymorphic': '*' 
> >     } 
> > 
> > 
> > # The event causing the error. 
> > # AttributeError: 'Join' object has no attribute 'implicit_returning' 
> > @event.listens_for(OutboundResultModel, 'after_insert', propagate=True) 
> > def set_latest_outbound_result(mapper, connection, target): 
> >     """Set the latest_outbound relationship on the Outbound parent.""" 
> >     statement = update(OutboundModel).where( 
> >         OutboundModel.id == target.outbound_id).values( 
> >         latest_result_id=target.id) 
> >     connection.execute(statement) 
>
>
> That's Core update(), which is probably not appreciating that 
> OutboundModel now maps to a join() because of the with_polymorphic in 
> the mapper config.   If you're doing Core you should call upon 
> OutboundModel.__table__ to eliminate any interference from the mapping 
> (or if that doesn't work, because i can't remember if __table__ is 
> going to pull in the polymorphic selectable as well, do 
> inspect(OutboundModel).local_table). 
>
>
>
> > 
> > 
> > -- 
> > 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:>. 
> > To post to this group, send email to [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