0.5.1, I will try with a later version if there is one.
Heres full test code:
from datetime import datetime
from sqlalchemy import *
from sqlalchemy.orm import mapper, relation
from sqlalchemy import Table, ForeignKey, Column
from sqlalchemy.types import Integer, Unicode, DateTime
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
# Global session manager: DBSession() returns the Thread-local
# session object appropriate for the current web request.
maker = sessionmaker(autoflush=True, autocommit=False)
DBSession = scoped_session(maker)
# Base class for all of our model classes: By default, the data model is
# defined with SQLAlchemy's declarative extension, but if you need more
# control, you can switch to the traditional method.
DeclarativeBase = declarative_base()
# There are two convenient ways for you to spare some typing.
# You can have a query property on all your model classes by doing this:
# DeclarativeBase.query = DBSession.query_property()
# Or you can use a session-aware mapper as it was used in TurboGears 1:
# DeclarativeBase = declarative_base(mapper=DBSession.mapper)
# Global metadata.
# The default metadata is the one from the declarative base.
metadata = DeclarativeBase.metadata
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))
created = Column(DateTime, default=datetime.now)
def __init__(self, modulename, content, summary):
self.modulename = modulename
self.content = content
self.summary = summary
DBSession.configure(bind=engine)
metadata.create_all(engine)
DBSession.add(Content("Front_Page","Test","New Entry"))
DBSession.commit()
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).all()
2009/9/7 Michael Bayer <
mik...@zzzcomputing.com>:
--
Thanks, Richie Ward