On May 18, 2011, at 12:33 AM, Yap Sok Ann wrote:
>
> author_name = column_property(
> select(
> [Author.name],
> author_id == Author.id,
> ).label('author_name')
> )
>
>
> Base.metadata.create_all(engine)
>
> Session.query(Book).order_by('id').all()
> Session.query(Book).order_by('id').limit(5).offset(5).all()
> #################################################
>
> the 2nd query will fail with this error:
>
> sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42S22', "[42S22]
> [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name
> 'name'. (207) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server
> Driver][SQL Server]Statement(s) could not be prepared. (8180)")
> u'SELECT anon_1.name, anon_1.books_id, anon_1.books_title,
> anon_1.books_author_id \nFROM (SELECT (SELECT authors.first_name + ?
> +authors.last_name AS name \nFROM authors \nWHERE books.author_id =
> authors.id) AS author_name, books.id AS books_id, books.title AS
> books_title, books.author_id AS books_author_id, ROW_NUMBER() OVER
> (ORDER BY id) AS mssql_rn \nFROM books) AS anon_1 \nWHERE mssql_rn > ?
> AND mssql_rn <= ?' (' ', 5, 10)
>
> Somehow it selects anon_1.name instead of anon_1.contact_name. I got
> the error on both 0.6.7 and 0.7b4.
now that is interesting, and its a bug, and why its unusual is because you've
got a column_property() deriving from another column_property(). But the bug
is interestingly a very simple one inside the select() construct. I still
have to figure out how to fix it. Here's a workaround for the moment:
author_name = column_property(
select(
[Author.name.__clause_element__().element],
author_id == Author.id,
).label('author_name')
)
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.