[sqlalchemy] Re: Select statement should not be in its own _froms list

2006-10-30 Thread Michael Bayer
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

2006-10-30 Thread Jonathan Ellis

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

2006-10-30 Thread Michael Bayer

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