On May 16, 2012, at 2:20 PM, Eduardo wrote: > > > Am Mittwoch, 16. Mai 2012 19:59:10 UTC+2 schrieb Michael Bayer: > If I put count() the result will be the number of hits I would like to have > both the number of hits and resulting column values for example
you'd need to use GROUP BY for that. if you say "SELECT COUNT(*) FROM <anything>", you get just one column back - the number of rows in <anything>. > If I execute it with > Session().query( > mytable.c.col1, > mytable.c.col2, > mytable.c.col3).\ > distinct().\ > filter(mytable.c.col1=='something').\ > limit(1).offset(2).\ > count() > I get only [33] (for example) > if I use > from_self() > I get an error > ProgrammingError: (ProgrammingError) column "anon_1.col1" must appear in the > GROUP BY clause or be used in an aggregate function can't reproduce - see sample: from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base Base= declarative_base() class A(Base): __tablename__ = "a" id = Column(Integer, primary_key=True) col1 = Column(String) col2 = Column(String) col3 = Column(String) e = create_engine("postgresql://scott:tiger@localhost/test", echo=True) Base.metadata.create_all(e) s = Session(e) s.add_all([ A(col1='col1A', col2='col21', col3='col31'), A(col1='col1A', col2='col22', col3='col32'), A(col1='col1A', col2='col23', col3='col33'), A(col1='col1B', col2='col24', col3='col34'), ]) print s.query( A.col1, A.col2, A.col3).\ distinct().\ filter(A.col1=='col1A').\ limit(1).offset(2).\ from_self(func.count('*')).\ all() output (after create table): SELECT count(%(param_1)s) AS count_1 FROM (SELECT DISTINCT a.col1 AS a_col1, a.col2 AS a_col2, a.col3 AS a_col3 FROM a WHERE a.col1 = %(col1_1)s LIMIT %(param_2)s OFFSET %(param_3)s) AS anon_1 2012-05-16 14:51:03,099 INFO sqlalchemy.engine.base.Engine {'param_1': '*', 'col1_1': 'col1A', 'param_3': 2, 'param_2': 1} [(1L,)] it would be very helpful if you could supply actual specific working code here instead of excerpts, it takes a lot of time trying to guess exactly what issue you're having, thanks -- 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 sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.