当前位置: 首页 > 面试题库 >

通过SQLAlchemy执行时,Teradata MERGE没有产生任何结果

阴元青
2023-03-14
问题内容

我试图将python与sqlalchemy结合使用以下载一些数据,在Teradata
Server上创建一个临时登台表,然后将该表合并到我创建的另一个表中以永久存储此数据。我正在使用sql =slqalchemy.text(merge)andtd_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表达式,例如perm_table从相同的python脚本填充的插入,并且运行良好。也许有一些特定于MERGE和SQLAlchemy组合的东西?


问题答案:

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

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


 类似资料:
  • 如果我从终端uvicorn main:app运行--重新加载一切工作。 当把它放在my_script.sh文件中时 然后什么都没发生。为什么? 我发现了这个:Uvicorn/FastAPI可执行文件,但似乎没有答案。

  • 片段着色器 结果是一个绿色屏幕,里面有一个黑色矩形。但我希望长方形改为蓝色。我的代码有问题吗?

  • 我已经导入了JUNIT 4.12和Hamcrest 1.3库以及测试文件夹设置。指向正确测试包文件夹的源代码。我将使用Shift F6为每个Java测试文件运行测试,它将执行该Java文件中的所有测试。重新启动计算机后,我按照同样的程序运行测试,结果“没有执行任何测试”。原因和解决方案可能是什么。 没有任何修改的同一个项目可以在另一台计算机上正常工作。试图重新安装Netbeans 8.2,但它没有

  • 我有一个POM文件(由Eclipse执行),我想在阶段执行一个ANT任务。基于m2e文档,在如何解决Spring Data Maven Builds的“生命周期配置未涵盖的插件执行”中,Maven:在打包期间执行antrun任务,以及Maven编译器插件声明的位置:in 我从阅读中了解到,我要求告诉Maven以下内容:首先要求Maven的Eclipse插件(m2e)允许maven-antrun-p

  • 我已经创建了一个Spring Boot和RestAPI应用程序项目。所有东西都运行并执行,但它没有在后端(MySQL)中创建任何表。它在控制台中也没有显示任何错误。我对spring boot和API是新手。 下面是我的代码: user.java: 我尝试添加spring.jpa.hibernate.ddl-auto=update和spring.jpa.hibernate.ddl-auto=crea

  • 无法在 AnjularJS 应用程序中看到拖动的元素,即使执行了拖放操作且没有任何错误。 代码如下: 以下是执行和执行的不同方法,没有错误: 还执行了JavaScript方法:但是没有运气,它也执行没有错误,但无法执行拖放操作在UIenter图像描述在这里 上述所有方法和命令都是编译和执行的,没有任何错误,但无法在UI中执行拖放操作(请帮助)。 尝试了所有可能的组合,我知道任何人都可以让我知道我错