Is it possible to make edits or override the ORM\'s generated SQL with your own raw SQL? Or is the ORM expected to be flexible enough to build pretty much any query I could
You can build it by aliasing the Model first and then using that alias as the second table to an outer join. The following assumes that you already have a session that is bound to a working engine:
from sqlalchemy.orm import aliased
from sqlalchemy import and_
allocation_status2 = aliased(AllocationStatus)
session.query(AllocationStatus).\
outerjoin(allocation_status2,
and_(AllocationStatus.allocation_id == allocation_status2.allocation_id,
AllocationStatus.id < allocation_status2.id)).\
filter(allocation_status2.id.is_(None)).all()
I hope this helps.