with Session( engine ) as session: youngest_ids_subq = ( select( func.max( People.id ).label( "max_id" ) ) .group_by( People.name ) .subquery() ) purge_stmt = ( delete( People ) .where( People.id.not_in( select( youngest_ids_subq.c.max_id ) ) ) ) session.execute( purge_stmt ) session.commit() unique_idx = Index( "uq_people_name", People.name, unique=True ) unique_idx.create(bind=engine)
Your version of the Purge would make an interesting Stephen King movie.
reply