Python slqalchemy命令的顺序对生成的sql查询有影响吗?

Python slqalchemy命令的顺序对生成的sql查询有影响吗?,python,sqlalchemy,Python,Sqlalchemy,我的sqlalchemy查询中的命令顺序是否会影响结果sql查询中的操作顺序 这是什么 result = db.session.query(Class, Student, SpecialNeed) \ .filter(Student.age > 10, Student.class_id == Class.id) \ .outerjoin(SpecialNeed,

我的sqlalchemy查询中的命令顺序是否会影响结果sql查询中的操作顺序

这是什么

result = db.session.query(Class, Student, SpecialNeed) \
                    .filter(Student.age > 10,
                        Student.class_id == Class.id) \
                    .outerjoin(SpecialNeed, \
                        and_(SpecialNeed.student_id == Student.id , \
                            SpecialNeed.valid == True))
和这个一样吗

result = db.session.query(Class, Student, SpecialNeed) \
                    .outerjoin(SpecialNeed, \
                        and_(SpecialNeed.student_id == Student.id , \
                            SpecialNeed.valid == True))\
                    .filter(Student.age > 10,
                        Student.class_id == Class.id)
result = db.session.query(Class, Student, SpecialNeed) \
                    .filter(Student.age > 10,
                        Student.class_id == Class.id)
这是吗

result = db.session.query(Class, Student, SpecialNeed) \
                    .filter(Student.age > 10) \
                    .filter(Student.class_id == Class.id)
和这个一样吗

result = db.session.query(Class, Student, SpecialNeed) \
                    .outerjoin(SpecialNeed, \
                        and_(SpecialNeed.student_id == Student.id , \
                            SpecialNeed.valid == True))\
                    .filter(Student.age > 10,
                        Student.class_id == Class.id)
result = db.session.query(Class, Student, SpecialNeed) \
                    .filter(Student.age > 10,
                        Student.class_id == Class.id)

在您的情况下,否,两种情况下的查询是相同的。前两者是相同的;首先是FROM列表,然后是WHERE,依此类推。与SQLAlchemy中的构建器模式相比,SQL只有严格的语法来规定子句的顺序。在后一个查询filterx中,y与filterx.filtery相同,都产生x和y

SQLAlchemy中有一些方法确实依赖于顺序,或者对其他操作的顺序有影响,例如,和。SQL中还有一些操作,例如左连接

因此,这个标题的答案是:它可以,但并不总是。除了了解底层SQL之外,您还必须查看文档并了解操作的功能。

相关:,