首页 > 解决方案 > 适用于 Python 的 Snowflake 连接器中的事务和回滚

问题描述

我正在使用适用于 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) 有任何问题,我想回滚。但是这段代码似乎没有回滚。

关于可能导致这种情况的任何想法?

标签: pythonpython-3.xtransactionsrollbacksnowflake-cloud-data-platform

解决方案


文档中,您必须将 autocommit 设置为 False 才能使 Rollback 工作,但是,即使设置了它,我也无法让它工作。请张贴你的发现。

ctx = snowflake.connector.connect(autocommit=False,user=username, password=password, account=account, warehouse=warehouse)

推荐阅读