我对选择查询的不同方法感到困惑。我看到的第一种方法是使用直接表对象及其select()
函数。但是,如果查询需要联接操作,则您似乎不通过表对象加入,而是使用session.query()
。
为什么有不同的方法来执行这些查询,何时应该使用每种方法?
答案 0 :(得分:1)
您正在看到SQLAlchemy的两个不同层的示例。
core layer(select
)通常直接处理表格,有时候对构造查询更加冗长。 orm layer(session.query
)通常处理映射的类,并为加入和过滤提供了一些便利。
任何一方都完全有能力执行复杂的查询。
核心层可能更适合更大的查询,代价是表达结果不如orm提供的完整映射类。
通常,在orm层编写应用程序更简单,更友好,并且只在需要时才会删除到核心层。我建议您阅读这两个链接的页面,以熟悉两者并决定哪个适合您。