########### Regular SQLAlchemy works correctly from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base Model = declarative_base("sqlite://") class Parent(Model): __tablename__ = 'parents' id = Column(Integer, primary_key=True) class Child(Model): __tablename__ = 'children' id = Column(Integer, primary_key=True) parent_id = Column(Integer, ForeignKey('parents.id')) parent = relationship(Parent, backref=backref('children', order_by=id.desc())) def __repr__(self): return "" % self.id Model.metadata.create_all() parent = Parent() child1 = Child(parent=parent) child2 = Child(parent=parent) session = sessionmaker()() session.add(parent) session.add(child1) session.add(child2) session.commit() for child in parent.children: print child.id # prints 2,1 like it's supposed to ########### Flask Extension screws up the ordering from flask import Flask from flaskext.sqlalchemy import SQLAlchemy app = Flask(__name__) db = SQLAlchemy(app) class Parent(db.Model): __tablename__ = 'parents' id = db.Column(db.Integer, primary_key=True) class Child(db.Model): __tablename__ = 'children' id = db.Column(db.Integer, primary_key=True) parent_id = db.Column(db.Integer, db.ForeignKey('parents.id')) parent = db.relationship(Parent, backref=db.backref('children', order_by=id.desc())) def __repr__(self): return "" % self.id db.create_all() parent = Parent() child1 = Child(parent=parent) child2 = Child(parent=parent) db.session.add(parent) db.session.add(child1) db.session.add(child2) db.session.commit() for child in parent.children: print child.id # Prints 1,2 despite my order_by=id.desc() in this relationship