gpt4 book ai didi

python - 通过 SQLAlchemy 执行 Teradata MERGE 时不会产生任何结果

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:44 25 4
gpt4 key购买 nike

我尝试使用 python 和 sqlalchemy 下载一些数据,在 Teradata 服务器上创建临时临时表,然后将该表合并到我创建的另一个表中以永久存储该数据。我正在使用 sql = slqalchemy.text(merge)td_engine.execute(sql),其中 merge 是类似于以下内容的字符串:

MERGE INTO perm_table as p
USING temp_table as t
ON p.Id = t.Id
WHEN MATCHED THEN
UPDATE
SET col1 = t.col1,
col2 = t.col2,
...
col50 = t.col50
WHEN NOT MATCHED THEN
INSERT (col1,
col2,
...
col50)
VALUES (t.col1,
t.col2,
...
t.col50)

脚本一直运行到最后,没有错误,并且 SQL 通过 Teradata Studio 正确执行,但由于某种原因,当我通过 SQLAlchemy 执行它时,表不会更新。不过,我也运行了不同的 SQL 表达式,例如从同一 python 脚本填充 perm_table 的插入,并且运行良好。也许 MERGE 和 SQLAlchemy 组合有一些特定的东西?

最佳答案

由于您直接使用引擎,而不使用事务,因此您可能(除非您进行了看不见的配置)依赖于 SQLAlchemy 的 autocommit 版本,它通过检测数据更改操作(例如 INSERT 等)来工作。可能 MERGE 不是检测到的操作之一。尝试一下

sql = sqlalchemy.text(merge).execution_options(autocommit=True)
td_engine.execute(sql)

关于python - 通过 SQLAlchemy 执行 Teradata MERGE 时不会产生任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54184962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com