主要区别在于,前者会导致查询使用SQL-92JOIN
语法,而后者会使用较旧的语法- 例如,有些人出于习惯而不喜欢它。两者都是正确的方法,两者都与是否使用Python语言无关。我还认为,sqlAlchemy也不是惯用语言,但Query.join()
正如您所指出的那样,它与定义的外键关系和ORM关系很好地配合使用。在现代sql DBMS中,它们还应导致相同的执行计划,因此资源使用等方面没有有意义的区别。
关于Query.update()
不支持显式联接的问题,不同的sql DBMS对具有不同语法和方法的多个表更新具有不同的支持。有些允许显式连接,有些则不允许,有些则允许通过子查询进行更新。当前的实现似乎是一个折衷方案,并且将为UPDATE
使用中的DBMS提供适当的声明。