2017-02-11 12 views
0

Я пытался получить какКак получить записи между числами при помощи SQL-алхимии

posts_q = Post_Data.query.filter(Count_Data.number.between(26000, 52000)).all() 

возвращает все (## 1,2,3,4) посты, но

posts_q = Post_Data.query.filter(Count_Data.number.between(26000, 33000)).all() 

нет записей Почему?

models.py

class Post_Data(db.Model): 
    __tablename__ = 'post_data' 
    # ... 
    terms_id = db.Column(db.Integer, db.ForeignKey('count_data.id')) 

class Count_Data(db.Model): 
    __tablename__ = 'count_data' 
    # ... 
    number = db.Column(db.Integer) 
    posts = db.relationship('Post_Data', backref='counts', lazy='dynamic') 

SQL

#1 Count_Data.number = 8000 
#2 Count_Data.number = 23000 
#3 Count_Data.number = 46000 
#4 Count_Data.number = 78000 
+0

Потому что у вас нет номера Amy между '26000, 33000' – metmirr

+0

@metmirr, спасибо, я знаю! Вопрос в том, почему в первом случае он возвращает все записи? – Wenceslaus

ответ

0

Я нашел решение, надо было использовать .join():

Post_Data.query.join(Count_Data).filter(Count_Data.number.between(26000, 52000)).all() 

возвращается # 3 входа

для последовательных сравнений не нужно вызывать .join()

q = Post_Data.query 
q = q.join(Count_Data).filter(Count_Data.number >= 26000) 
q = q.filter(Count_Data.number <= 52000) 
q = q.all()