I'm trying to set up a hybrid property / expression in a custom class, that I can use in queries. I think I have the syntax correct, however the query returns the entire table, instead of the correct subset of results. And the where clause just indicates True rather than the correct expression.
Here is my hybrid property/expression definition class Sample(Base,ArrayOps): __tablename__ = 'sample' __table_args__ = {'autoload' : True, 'schema' : 'datadb'} def __repr__(self): return '<Sample (pk={0},cube={1})'.format(self.pk,self.cube) @hybrid_property def nsa_logmstar(self): try: return math.log10(self.nsa_mstar) except ValueError as e: return -9999.0 except TypeError as e: return None @nsa_logmstar.expression def nsa_logmstar(cls): return func.log(cls.nsa_mstar) The session query is session.query(Sample.pk).filter(Sample.nsa_logmstar < 9) But printing it does not show the appropriate condition. I get SELECT datadb.sample.pk AS datadb_sample_pk, FROM datadb.sample WHERE true and the results return the entire table of ~11000 rows instead of the expected 272 rows. What's going on here? Everything looks correct to me, but I can't figure it out. I'm expecting the SQL statement to look like this select s.pk from datadb.sample as s where log(s.nsa_mstar) < 9; Any thoughts? Thanks. -- 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.