I would like to convert this query to SQLAlchemy:
SELECT revision_id, modulename, content

FROM content

WHERE revision_id IN (

    SELECT MAX(revision_id) FROM content c

    GROUP BY modulename

)

AND content != ''

ORDER BY modulename

with this table:
CREATE TABLE content (

        revision_id INTEGER NOT NULL,

        modulename VARCHAR(256),

        content VARCHAR(102400),

        summary VARCHAR(256),

        created TIMESTAMP,

        PRIMARY KEY (revision_id)

)

or:

class Content(DeclarativeBase):
    __tablename__ = 'content'

    revision_id = Column(Integer, primary_key=True)
    modulename = Column(Unicode(256))
    content = Column(Unicode(102400), default='')
    summary = Column(Unicode(256))
    users = relation(User, secondary=ContentUser.__table__,
backref='content')
    created = Column(DateTime, default=datetime.now)

I had a go at it myself and heres what I managed to do:
revision_ids = DBSession.query(func.max(Content.revision_id)).group_by
(

                                    Content.modulename).subquery()

pages = DBSession.query(Content.modulename, Content.revision_id,

                                Content.content).filter(and_(

                                Content.revision_id.in_(revision_ids),

                                Content.content != '')).order_by(

                                Content.modulename)

It worked (as in does not error out) if I remove .subquery() but then
pages does not work as expected, I think I need to use a subquery to
make it work 100%.

Heres the error:
OperationalError: (OperationalError) near "SELECT": syntax error
u'SELECT content.modulename AS content_modulename, content.revision_id
AS content_revision_id, content.content AS content_content \nFROM
content, (SELECT max(content.revision_id) AS max_1 \nFROM content
GROUP BY content.modulename) AS anon_1 \nWHERE content.revision_id IN
SELECT max(content.revision_id) AS max_1 \nFROM content GROUP BY
content.modulename AND content.content != ? ORDER BY
content.modulename' ['']

There is a forum thread on my favorable forum where I asked how to
design the query, as I got a bit stuck on the theory behind such a
complex query. This should give you a idea of what I am trying to
achieve.
http://forums.overclockers.co.uk/showthread.php?t=18050830

Thanks alot for your help :)

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

Reply via email to