【发布时间】:2020-02-25 17:59:42
【问题描述】:
我正在使用适用于 Python 的 Snowflake 连接器,如下所示:
ctx = snowflake.connector.connect(user=username, password=password, account=account, warehouse=warehouse)
cs = ctx.cursor()
try:
cs.execute(u"begin")
cs.execute("TRUNCATE table1")
cs.execute("TRUNCATE table2")
cs.execute("TRUNCATE table3")
ctx.commit()
except snowflake.connector.errors.ProgrammingError as e:
ctx.rollback()
print("ERROR" + e.msg)
finally:
cs.close()
ctx.close()
基本上,如果任何 SQL (TRUNCATES) 有任何问题,我想回滚。但是这段代码似乎没有回滚。
关于什么可能导致这种情况的任何想法?
【问题讨论】:
-
你一定对雪花的Transaction部分感兴趣。但我认为你必须使用 DML 语句作为 DDL 截断并且有自己的自动提交事务,而不是你可以使用简单的删除。 link
-
@PIG,根据 Snowflake 文档,TRUNCATE 是一个 DML 命令:docs.snowflake.net/manuals/sql-reference/sql/…
-
删除不能解决问题。 ?
-
TRANSACTION_ABORT_ON_ERROR你把它设为 True 了吗? -
如何使用 Python 连接器设置 TRANSACTION_ABORT_ON_ERROR?
标签: python python-3.x transactions rollback snowflake-cloud-data-platform