dont use query.count() for anything but the most simple counts of
entities.  if you're already creating a complex query using aggregate
functions and such, query the func.count() values directly using
query(func.count(whatever)), query.value(func.count(whatever)),
query.values(func.count(whatever)), etc.



DavidG wrote:
>
> Hi,
>
> Ok, I am doing a "standard" tags thingee which is many-to-many. I want
> to to a query so that I get the main records which have all the named
> keywords. To use webpage paging efficiently, I need to get a count()
> of the records. This does not seem to work the way I am doing it.
> Also, I don't think ranges are working, either, for this query (e.g., .
> [3:5]).
>
> The query:
>
>  taglist = ['science']
>  tagcount = 1
>
>  page_q = SES.query(Quote)
>  quotes_q = page_q.join(Quote.tags).filter(Tag.tagword.in_(taglist)).\
>                    group_by(Quote.id).having(func.count(Quote.id) ==
> tagcount)
>  n = quotes_q.count()
>  print "count n=", n
>
> USUALLY puts out a "1", or "None" (both of which are incorrect).
>
> NOTE:
> qrecs = quotes_q.all() works!
>
>
> 3 tables: the relation table, plus two classes (irrelevant stuff
> removed):
>
> quote_tag = Table('quote_tag', meta.metadata,
>                    Column('quote_id', Integer, ForeignKey
> ('quote.id')),
>                    Column('tag_id', Integer, ForeignKey('tag.id'))
>                    )
>
> class Quote(Base):
>     __tablename__ = "quote"
>
>     id = Column(Integer, primary_key=True)
>     date_create = Column(DateTime)
>     qbody = Column(UnicodeText)
>
>     tags = relation("Tag", secondary=quote_tag, backref='quote')
>
> class Tag(Base):
>     __tablename__ = "tag"
>
>     id = Column(Integer, primary_key=True)
>     tagword = Column(Unicode(20), nullable=False, unique=True)
>
>
> Any ideas what I am doing wrong? (Also, I am obviously a SQL
> dyslexic!)
>
> Thanks!
> >
>


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

Reply via email to