SQLAlchemy core中是否有`USING`子句?

3
我正在使用SQLAlchemy连接到MySQL数据库。是否有一种方法可以使用MySQL的USING子句来连接表格?
例如:
SELECT *
FROM
  a JOIN b
    USING(some_id, other_id);
1个回答

1

简短回答

不需要。

详细回答

你可以编写一个编译器扩展来渲染语句,但我认为这并不值得努力。下面是解释。

在MySQL中,您不必使用USING来连接表。它被视为更通用的ON结构的语法糖。

SQLAlchemy不包括处理连接列具有相同名称的特殊情况(使用USING的主要用例)。它始终使用最通用的方法(ON)。

由于SQLAlchemy将为您呈现所有ON语句,并且在大多数情况下将从您的Table定义推断出连接关系,因此根本不需要指定连接条件,因此这不一定更麻烦。

示例

t1 = Table('a', metadata,
           Column('id', Integer))
t2 = Table('b', metadata,
           Column('id', Integer),
           Column('fk', Integer, ForeignKey('a.id')))

sel = select([
    t1.c.id,
    t2.c.id,
]).select_from(
    t1.join(t2)  # please note, no ON or USING
)
print sel

将会产生
SELECT a.id, b.id 
FROM a JOIN b ON a.id = b.fk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接