On Thu, Jun 26, 2014 at 7:47 PM, Ken Lareau <klar...@tagged.com> wrote:
> On Jun 26, 2014 7:40 PM, "Mike Bayer" <mike...@zzzcomputing.com> wrote: > > > > right, so a few emails ago I said: > > > > > you need to put .label('environment') on that column before it finds > its way into subq. I dont have the mappings here to review. > > > > here's that: > > > > > > @environment.expression > > def environment(cls): > > return select( > > [Environment.environment] > > ).where( > > Environment.id == cls.environment_id > > ).correlate(cls).label('environment') > > > Aha... thanks. Now I'm afraid to ask if you looked at the "after" file, > and if so, considered it insane. :) > > - Ken > > > > > > > > > > > > > On 6/26/14, 9:50 PM, Ken Lareau wrote: > >> > >> Done, new file attached (this gives the same error message as the one I > showed initially, at least on my system). > >> > >> - Ken > >> -- > >> 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 http://groups.google.com/group/sqlalchemy. > >> For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > 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 http://groups.google.com/group/sqlalchemy. > > For more options, visit https://groups.google.com/d/optout. > Okay, trying the updated code worked with queries, but apparently not with an insert. Here's the basic code involved: class AppDeployment(Base): __tablename__ = 'app_deployments' id = Column(u'AppDeploymentID', INTEGER(), primary_key=True) deployment_id = Column( u'DeploymentID', INTEGER(), ForeignKey('deployments.DeploymentID', ondelete='cascade'), nullable=False ) app_id = Column( u'AppID', SMALLINT(display_width=6), ForeignKey('app_definitions.AppID', ondelete='cascade'), nullable=False ) user = Column(String(length=32), nullable=False) status = Column( Enum( 'complete', 'incomplete', 'inprogress', 'invalidated', 'validated', ), nullable=False ) environment_id = Column( u'environment_id', INTEGER(), ForeignKey('environments.environmentID', ondelete='cascade'), nullable=False ) realized = Column( TIMESTAMP(), nullable=False, server_default=func.current_timestamp() ) environment_obj = relationship('Environment') @hybrid_property def environment(self): return self.environment_obj.environment @environment.expression def environment(cls): return select([Environment.environment]).\ where(Environment.id == cls.environment_id).correlate(cls).\ label('environment') and def _calculate_environment_id(environment): return (Session.query(Environment.id) .filter_by(environment=environment) .one())[0] def add_app_deployment(dep_id, app_id, user, status, environment): """Add a tier deployment for a given deployment ID""" environment_id = _calculate_environment_id(environment) app_dep = AppDeployment( deployment_id=dep_id, app_id=app_id, user=user, status=status, environment_id=environment_id, realized=func.current_timestamp() ) # Commit to DB immediately Session.add(app_dep) Session.commit() return app_dep An actual call to add_app_deployment() results in this exception: File "util.pyx", line 91, in oursql._do_warnings_query (oursqlx/oursql.c:3969) sqlalchemy.exc.DBAPIError: (CollatedWarningsError) (None, 'query caused warnings', [(<class 'oursql.Warning'>, (u"Field 'environment' doesn't have a default value", 1364L))]) u'INSERT INTO app_deployments (`DeploymentID`, `AppID`, user, status, environment_id, realized) VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP)' (4162L, 405L, 'klareau', 'inprogress', 1L) I'm guessing something's still not quite right with the 'environment' hybrid property in the class? :-/ -- - Ken Lareau -- 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 http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.