mysql - SQLAlchemy 核心中是否有 `USING` 子句?

标签 mysql sqlalchemy

我在 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/

相关文章:

mysql - 连接vb6到mysql :[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

python - 嵌套的 Marshmallow 字段和 Sqlalchemy 关系

python - 关于使用缓存或基于 cookie 的 session 的服务器端 session 的疑问

python - 使用 psycopg2 模块将值插入数据库时​​出错

python - 在初始查询 sqlalchemy 中限制子集合

mysql - 需要有关 CREATE VIEW 语法错误的帮助

php - 使用 PHP 通过 id 从数据库中删除特定条目

mysql - mysql 是否可以使列标题像这样?

php - 将 MySQL 表列数组插入到新的 MySQL 表中

python - SQLAlchemy:修改查询对象的 from 子句