########### 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 "<Child id=%s>" % 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 "<Child id=%s>" % 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