[sqlalchemy] Re: Select statement should not be in its own _froms list
interesting ! that answers that question (i.e., the question above the assertion statement) changed it to a "continue" in rev 2072.however, your mapping isnt going to work with those textual columns anyway since it cant intelligently construct an aliased select from it, you have to say:s = select([b.c.published_year, func.count('*').label('n')], from_obj=[b], group_by=[b.c.published_year])i guess you already knew that.On Oct 30, 2006, at 6:19 PM, Jonathan Ellis wrote:from sqlalchemy import * e = create_engine('sqlite:///:memory:', echo=True) md = BoundMetaData(e) sql = """ CREATE TABLE books ( id integer PRIMARY KEY, -- auto-SERIAL in sqlite title text NOT NULL, published_year char(4) NOT NULL, authors text NOT NULL ) """ e.execute(sql) b = Table('books', md, autoload=True) s = select(["published_year", "count(*) as n"], from_obj=[b], group_by=[b.c.published_year]) s = s.alias('years_with_count') class YearWithCount(object): pass mapper = mapper(YearWithCount, s) session = create_session() q = session.query(YearWithCount) q.select_by(published_year='2006') --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy -~--~~~~--~~--~--~---
[sqlalchemy] Re: Select statement should not be in its own _froms list
Heh, that was easy. I'm curious now, though, why it can't find the primary key with the revised select you gave. (Works fine when I manually tell the mapper what to use.) On 10/30/06, Michael Bayer [EMAIL PROTECTED] wrote: interesting ! that answers that question (i.e., the question above the assertion statement) changed it to a continue in rev 2072. however, your mapping isnt going to work with those textual columns anyway since it cant intelligently construct an aliased select from it, you have to say: s = select([b.c.published_year, func.count('*').label('n')], from_obj=[b], group_by=[b.c.published_year]) i guess you already knew that. On Oct 30, 2006, at 6:19 PM, Jonathan Ellis wrote: from sqlalchemy import * e = create_engine('sqlite:///:memory:', echo=True) md = BoundMetaData(e) sql = CREATE TABLE books ( id integer PRIMARY KEY, -- auto-SERIAL in sqlite titletext NOT NULL, published_year char(4) NOT NULL, authors text NOT NULL ) e.execute(sql) b = Table('books', md, autoload=True) s = select([published_year, count(*) as n], from_obj=[b], group_by=[b.c.published_year]) s = s.alias('years_with_count') class YearWithCount(object): pass mapper = mapper(YearWithCount, s) session = create_session() q = session.query(YearWithCount) q.select_by(published_year='2006') -- Jonathan Ellis http://spyced.blogspot.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy -~--~~~~--~~--~--~---
[sqlalchemy] Re: Select statement should not be in its own _froms list
because the available columns of the selectable is always treated based on the columns declared. the FROM/WHERE is like the backend to the query and the column clauses are the public interface. heh. On Oct 30, 2006, at 7:02 PM, Jonathan Ellis wrote: Heh, that was easy. I'm curious now, though, why it can't find the primary key with the revised select you gave. (Works fine when I manually tell the mapper what to use.) On 10/30/06, Michael Bayer [EMAIL PROTECTED] wrote: interesting ! that answers that question (i.e., the question above the assertion statement) changed it to a continue in rev 2072. however, your mapping isnt going to work with those textual columns anyway since it cant intelligently construct an aliased select from it, you have to say: s = select([b.c.published_year, func.count('*').label('n')], from_obj=[b], group_by=[b.c.published_year]) i guess you already knew that. On Oct 30, 2006, at 6:19 PM, Jonathan Ellis wrote: from sqlalchemy import * e = create_engine('sqlite:///:memory:', echo=True) md = BoundMetaData(e) sql = CREATE TABLE books ( id integer PRIMARY KEY, -- auto-SERIAL in sqlite titletext NOT NULL, published_year char(4) NOT NULL, authors text NOT NULL ) e.execute(sql) b = Table('books', md, autoload=True) s = select([published_year, count(*) as n], from_obj=[b], group_by=[b.c.published_year]) s = s.alias('years_with_count') class YearWithCount(object): pass mapper = mapper(YearWithCount, s) session = create_session() q = session.query(YearWithCount) q.select_by(published_year='2006') -- Jonathan Ellis http://spyced.blogspot.com --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy -~--~~~~--~~--~--~---