Wow this was very fast! Thanks for your support.

Best regards.

Cagatay


1 Mayıs 2014 Perşembe 02:08:47 UTC+3 tarihinde Michael Bayer yazdı:
>
> this is issue:
>
>
> https://bitbucket.org/zzzeek/sqlalchemy/issue/3038/compilers-that-apply-binds-in-select
>
> and resolved in master / rel_0_9 in 2a458680a49376b8a11b34.
>
>
> On Apr 30, 2014, at 3:45 PM, Çağatay Tengiz 
> <cagatay...@gmail.com<javascript:>> 
> wrote:
>
> Hello,
>
> Sqlalchemy Version : 0.9.4
> Engine : firebird+fdb
> RDBMS : Firebird 2.5
>
> I am trying to selected limited rows from a mapper class which contains 
> column_property with limit. But number or rows returned is not what I 
> expected. When I turned on debugging I realized that, SqlAlchemy is giving 
> parameters in wrong order. Am I missing something or is there a bug in 
> SqlAlchemy?
>
>
> Mapper Class :
> ~~~~~~~~~~~~
> class Issue(Base, MkMixin):
>     id = Column(BigInteger, Sequence('gn_issue'), primary_key=True)
>
>     parent_id = Column(BigInteger, ForeignKey("issue.id",
>                                               ondelete="CASCADE",
>                                               onupdate="CASCADE",
>                                               name="fk_issue_parent"))
>
>     project_id = Column(BigInteger, ForeignKey("project.id",
>                                                ondelete="CASCADE",
>                                                onupdate="CASCADE",
>                                                name="fk_issue_project"),
>                         nullable=False)
>     project_code = column_property(select(['project.code'], 
> from_obj='Project').where('Project.id=Issue.project_id'))
>
>     usr_id_from = Column(BigInteger,  ForeignKey("usr.id",
>                                                  ondelete="NO ACTION",
>                                                  onupdate="CASCADE",
>                                                  name="fk_issue_usr_from"),
>                          nullable=False)
>     usr_code_from = column_property(select(['usr.code'], 
> from_obj='Usr').where('Usr.id=Issue.usr_id_from'))
>
>     usr_id_assigned = Column(BigInteger, ForeignKey("usr.id",
>                                                     ondelete="NO ACTION",
>                                                     onupdate="CASCADE",
>                                                     
> name="fk_issue_usr_assigned"))
>     usr_code_assigned = column_property(select(['usr.code'], 
> from_obj='Usr').where('Usr.id=Issue.usr_id_assigned'))
>
>     category_id = Column(BigInteger, ForeignKey("dfissuecategory.id",
>                                                 ondelete="No ACTION",
>                                                 onupdate="CASCADE",
>                                                 
> name="fk_issue_dfissuecategory"),
>                          nullable=False)
>     category = column_property(select(['DfIssueCategory.code'], 
> from_obj='DfIssueCategory').where('DfIssueCategory.id=Issue.category_id'))
>
>     status_id = Column(BigInteger, ForeignKey("dfissuestatus.id",
>                                               ondelete="NO ACTION",
>                                               onupdate="CASCADE",
>                                               
> name="fk_issue_dfissuestatus"),
>                        nullable=False)
>     status = column_property(select(['DfIssueStatus.code'], 
> from_obj='DfIssueStatus').where('DfIssueStatus.id=Issue.status_id'))
>
>     priority_id = Column(BigInteger, ForeignKey("dfissuepriority.id",
>                                                 ondelete="NO ACTION",
>                                                 onupdate="CASCADE",
>                                                 
> name="fk_issue_dfissuepriority"),
>                          nullable=False)
>     priority = column_property(select(['DfIssuePriority.code'], 
> from_obj='DfIssuePriority').where('DfIssuePriority.id=Issue.priority_id'))
>
>     dt_open = Column(Date)
>     dt_due = Column(Date)
>     dt_plan = Column(Date)
>     estimated_hours = Column(Numeric(9, 2))
>
>     last_update = column_property(select(['Issue_Changeset.zlins_dttm'], 
> from_obj='Issue_Changeset').\
>                                   
> where('Issue_Changeset.issue_id=Issue.id').\
>                                   
> order_by(desc('Issue_Changeset.zlins_dttm')).limit(1))
>   
>
>     title = Column(String(200))
>     description = Column(TEXT)
>
>     is_private = Column(Boolean, nullable=False, default=False)
>
>     done_ratio = Column(Integer, default=0)
>
> ~~~~~~~~~~
>
> From this class I am trying to select first 10 rows as :
>
> db.query(Issue).filter(Issue.usr_id_assigned == 
> 1).order_by(desc(Issue.dt_open), desc(Issue.id)).limit(10)
>
> Generated Sql Is :
>
> 2014-04-30 22:23:53,961 INFO sqlalchemy.engine.base.Engine SELECT FIRST 
> ?(SELECT project.code 
> FROM Project 
> WHERE Project.id=Issue.project_id) AS anon_1, (SELECT usr.code 
> FROM Usr 
> WHERE Usr.id=Issue.usr_id_from) AS anon_2, (SELECT usr.code 
> FROM Usr 
> WHERE Usr.id=Issue.usr_id_assigned) AS anon_3, (SELECT 
> DfIssueCategory.code 
> FROM DfIssueCategory 
> WHERE DfIssueCategory.id=Issue.category_id) AS anon_4, (SELECT 
> DfIssueStatus.code 
> FROM DfIssueStatus 
> WHERE DfIssueStatus.id=Issue.status_id) AS anon_5, (SELECT 
> DfIssuePriority.code 
> FROM DfIssuePriority 
> WHERE DfIssuePriority.id=Issue.priority_id) AS anon_6, (SELECT FIRST ? 
> Issue_Changeset.zlins_dttm 
>
> FROM Issue_Changeset 
> WHERE Issue_Changeset.issue_id=Issue.id ORDER BY 
> Issue_Changeset.zlins_dttm DESC) AS anon_7, issue.id AS issue_id, 
> issue.parent_id AS issue_parent_id, issue.project_id AS issue_project_id, 
> issue.usr_id_from AS issue_usr_id_from, issue.usr_id_assigned AS 
> issue_usr_id_assigned, issue.category_id AS issue_category_id, 
> issue.status_id AS issue_status_id, issue.priority_id AS issue_priority_id, 
> issue.dt_open AS issue_dt_open, issue.dt_due AS issue_dt_due, issue.dt_plan 
> AS issue_dt_plan, issue.estimated_hours AS issue_estimated_hours, 
> issue.title AS issue_title, issue.description AS issue_description, 
> issue.is_private AS issue_is_private, issue.done_ratio AS 
> issue_done_ratio, issue.zlins_dttm AS issue_zlins_dttm, issue.zlins_usr AS 
> issue_zlins_usr, issue.zlupd_dttm AS issue_zlupd_dttm, issue.zlupd_usr AS 
> issue_zlupd_usr 
> FROM issue 
> WHERE issue.usr_id_assigned = ? ORDER BY issue.dt_open DESC, issue.id DESC
> 2014-04-30 22:23:53,961 INFO sqlalchemy.engine.base.Engine (1, 10, 1)
>
> I think correct order should be : (10, 1, 1)
>
> Any help is greatly appreciated.
>
> Best regards.
>
>
>
> -- 
> 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+...@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.
>
>
>

-- 
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.

Reply via email to