Hi Mike -

Confused. Why would it be different with the limit() or not? Without
the limit() I get *all* the Quote records (>1000) which is correct. If
I have something like limit(10), I'll get *less then 10*.

Also, I didn't know about the "unique entities" limitation. In any
event, the Quote objects are all unique (via their unique primary_key
"id").

OK, more details. Here are the classes (summary):

class Quote(Base):
    __tablename__ = "quote"

    id = Column(Integer, primary_key=True)
    date_create = Column(DateTime)
    feedback = relation('Feedback')

class Feedback(Base):
    __tablename__ = "feedback"

    id = Column(Integer, primary_key=True)
    username = Column(Unicode(20))      # NOTE: this is a ForeignKey
also, but ignore for now.
    quote_id = Column(Integer,
                   ForeignKey('quote.id'))
    vote = Column(Integer, default=0)   # -1 or +1

This *should* be so simple: there are bunches of quotes. There *may*
be a (single) Feedback record for each user for each quote. For a
given username, I want to display a range of quotes, sorted a
particular way, with the Feedback record for each quote (when it
exists) tacked on (in a tuple is fine).

Thanks!


On Aug 24, 4:42 pm, "Michael Bayer" <[email protected]> wrote:
> Query(), when called with entity classes as arguments, returns only unique
> entities or unique combinations thereof.   to get the raw data call Query
> with columns/attributes as arguments instead.
>
> DavidG wrote:
>
> > Hi,
>
> > I can give all the details, but let's start with a simple question.
>
> > I have a query, and it is returning the wrong number of rows!
>
> > Not only is the number wrong compared to what I would expect, but,
> > more importantly, when I paste the *exact sql* (except for
> > substituting a param) printed on the console with "echo on" into the
> > mysql prompt, the results are exactly what I would expect.
>
> > What, if anything, is known to cause the "printed sql" to give a
> > different result then sqlalchemy itself?
>
> > I am using:
> > sqlalchemy-0.5.5
> > mysql
> > python 2.6.2
>
> > I am using the orm, and I am doing basically:
>
> > recs = q.all()
> > print "len(recs)=", len(recs)
>
> > where q is the query.
>
> > Sample:
>
> > username = u'steve'
> > subq = SES.query(Feedback).filter(Feedback.username ==
> > username).subquery()
> > valias = aliased(Feedback, subq)
> > q = SES.query(Quote, valias).order_by(desc(Quote.n_votes)).outerjoin
> > (Quote.feedback, valias).limit(2)
>
> > Without the limit(), I get all the records (>1000), which seem
> > correct. *With* the limit, the number of records is completely kookie
> > (to me!). It seems to be always *less* then what the actual limit is.
>
> > But again, the sql printed on the console gives me the correct
> > results!
>
> > Any help would be most appreciated! Thank you. I will happily furnish
> > more details if needed.
>
> > David
>
>
--~--~---------~--~----~------------~-------~--~----~
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