小编Ken*_*eth的帖子

SQLAlchemy 中的 SQL Pivot 操作

我正在尝试使用 SQLAlchemy 对数据库执行 SQL 数据透视操作,但我不太清楚如何进行此操作。由于大小,我不想从数据库中删除这些数据,所以我认为在这里使用 numpy/pandas 不能帮助我。我试图传递给 RDBMS 的 SQL(当前查询在 Oracle 上)是这样的:

SELECT *
FROM (
    SELECT COL_A, COL_B, COL_C, COL_D
    FROM MY_TABLE
) PIVOT (
    MAX(COL_D)
    FOR COL_D IN (
        'VAL_1',
        'VAL_2',
        'VAL_3',
    )
)
Run Code Online (Sandbox Code Playgroud)

我在 SQLAlchemy 中找不到任何对它的本地支持,所以我尝试沿着创建编译扩展的路线走下去。这是我目前拥有它的方式:

from sqlalchemy.sql.expression import ClauseElement, Executable
from sqlalchemy.ext.compiler import compiles


class Pivot(Executable, ClauseElement):
    def __init__(self, piv_sub_query, func, for_col, in_cols):
        self.piv_sub_query = piv_sub_query
        self.func = func
        self.for_col = for_col
        self.in_cols = in_cols

@compiles(Pivot)
def visit_pivot(element, compiler, **kwargs):
    in_group = ["'" + element.in_cols[key] + …
Run Code Online (Sandbox Code Playgroud)

python oracle sqlalchemy

5
推荐指数
0
解决办法
537
查看次数

标签 统计

oracle ×1

python ×1

sqlalchemy ×1