Thanks a lot!!! On Monday, June 2, 2014 7:51:56 PM UTC+3, Michael Bayer wrote: > > oh, I should have even seen this in the compiled SQL, sorry. See that > :project_id_1 ? that’s a bound parameter. It’s coming out because when > you send the column_property() into the expression like that, it isn’t > recognized as a SQL-producing object. If OTOH you passed in > “JobItem.project_id” after JobItem were mapped, then it would work because > project_id would now be an attribute with a SQL expression set up, but as > you can see, you can’t do that right here because you’re still in the class > def; this is the improvement to column_property I referred to. Actually > this can work as is based on the patch I just added to > https://bitbucket.org/zzzeek/sqlalchemy/issue/3050/support-lambdas-strings-in-column_property > > <https://www.google.com/url?q=https%3A%2F%2Fbitbucket.org%2Fzzzeek%2Fsqlalchemy%2Fissue%2F3050%2Fsupport-lambdas-strings-in-column_property&sa=D&sntz=1&usg=AFQjCNFXb73ncg1olp1NwrL4o1STisKwmg> > . > > But don’t even worry about that patch, workaround right now is just to > refer to .expression: > > @declared_attr > def nested_quantity(cls): > return column_property( > select( > [func.sum(NestingSheetLayoutItem.quantity)], > ( > > (cls.project_id.expression==NestingSheetLayout.project_id) & > (cls.part_id == NestingSheetLayoutItem.part_id) > ) > ) > ) > > I’ll try to get that patch in for 0.9.5. > > > > > > On Jun 2, 2014, at 6:09 AM, Vladimir Iliev <vladimi...@gmail.com > <javascript:>> wrote: > > sorry, i have copy-and-paste incomplete parts of my real model definitions. > > run the attached file and you will see the exception.... > > sqlalchemy.exc.InterfaceError: (InterfaceError) Error binding parameter 0 > - probably unsupported type. u'SELECT (SELECT > sum(nestingsheetlayoutitem.quantity) AS sum_1 \nFROM > nestingsheetlayoutitem, nestingsheetlayout \nWHERE > nestingsheetlayout.project_id = ? AND jobitem.part_id = > nestingsheetlayoutitem.part_id) AS anon_1, (SELECT job.project_id \nFROM > job \nWHERE job.id = jobitem.job_id) AS anon_2, jobitem.id AS jobitem_id, > jobitem.job_id AS jobitem_job_id, jobitem.quantity AS jobitem_quantity, > jobitem.part_id AS jobitem_part_id \nFROM jobitem' (<ColumnProperty at > 0x935c48c; no key>,) > > > On Sunday, June 1, 2014 1:47:06 AM UTC+3, Michael Bayer wrote: >> >> your example is incomplete in that it is missing named columns such as >> “part_id” and such, but when I fill those in I’m able to form a SELECT >> using the properties you refer to: >> >> SELECT (SELECT sum(nestingsheetlayoutitem.quantity) AS sum_1 >> FROM nestingsheetlayoutitem, nestingsheetlayout >> WHERE nestingsheetlayout.project_id = :project_id_1 AND jobitem.part_id = >> nestingsheetlayoutitem.part_id) AS anon_1, (SELECT job.project_id >> FROM job >> WHERE job.id = jobitem.job_id) AS anon_2, jobitem.id AS jobitem_id, >> jobitem.job_id AS jobitem_job_id, jobitem.quantity AS jobitem_quantity, >> jobitem.part_id AS jobitem_part_id >> FROM jobitem >> >> >> I can see that this query has problems, such as that your column property >> isn’t equating nestingsheetlayoutitem and nestingsheetlayout to each other >> and you might be getting too many rows back, but the query is representing >> as close as I can tell what you’re asking it to render. The subqueries >> correlate to job_item on the outside, and sometimes there’s extra things >> needed to make these correlations work out OK but here they seem to be >> unambiguous. >> >> please work with the attached to show more specifically the part that is >> not working. I will note that column_property does have some >> configurational limitations within declarative, in that if you wanted to >> refer to a column_property attached to JobItem directly you have to jump >> through some extra hoops at the moment, there’s plans to get column_props >> to be more flexible within declarative. But the mapping here doesn’t seem >> to be running into those. >> >> > -- > 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 tosqlalchemy+...@googlegroups.com <javascript:>. > To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. > <colprop.py> > > >
-- 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.