我在 MySQL 数据库上使用 SQLAlchemy。有没有办法可以使用 MySQL 的 USING
子句来连接表?
例如
SELECT *
FROM
a JOIN b
USING(some_id, other_id);
最佳答案
简答
没有。
更长的答案
你可以写一个 compiler extension呈现声明,但我认为不值得付出努力。解释如下。
在 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
关于mysql - SQLAlchemy 核心中是否有 `USING` 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198312/