Revision 373135353430 () - Diff

Link to this snippet: https://friendpaste.com/2EBQ2hT2PLXMWmMiq4LeKI
Embed:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
########### 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