通过 Python 切片 Snowflake 错误消息

Slicing of Snowflake error message through Python

如果源和目标计数不匹配,我有一个雪花过程抛出错误消息,这是在 AWS Glue python 异常块中捕获的:

100132 (P0000): JavaScript execution error: Uncaught The table: test_table is NOT balanced. Following are the balancing statistics: 
TABLE_NAME: test_table
SOURCE_COUNT: 17022 
TARGET_COUNT: 6585
BALANCED: N
 in SF_TABLE_PROC at '          throw err;' position 3
stackstrace: 
SF_TABLE_PROC line: 38

但我想删除雪花的默认错误消息“100132 (P0000): JavaScript 执行错误: 未捕获”和后面的部分“在 SF_TABLE_PROC at 'throw err;'位置 3 堆栈跟踪: SF_TABLE_PROC 行:38".

理想情况下,我的错误消息应该只包含主要消息正文:

The table: test_table is NOT balanced. Following are the balancing statistics: 
TABLE_NAME: test_table
SOURCE_COUNT: 17022 
TARGET_COUNT: 6585
BALANCED: N

抛出错误消息的 Snowflake proc 块:

try
{
    if (tgt_count != src_count)
    {
        throw '\n' + 'The table: test_table is NOT balanced. Following are the balancing statistics: ' + '\n' + '\nTABLE_NAME: test_table' + '\nSOURCE_COUNT: ' + src_count + '\nTARGET_COUNT: ' + tgt_count + '\nBALANCED: N' + '\n';
    }
}
catch(err)
{   
    throw err;
}

其中 tgt_count:来自目标 table 和

的计数 (1)

src_count:来自来源 table 的计数 (1)。

有什么方法可以将错误消息分割成雪花状或python? 当我试图在 python 中分割错误消息时,它给了我一个错误: TypeError: 'ProgrammingError' object is not subscriptable 下面是我的 python 代码:

except Exception as error:
    print("Error: ", error[53:90])
    raise(error)

请帮我找回准确的错误信息。

您可以尝试这样的操作:

from snowflake.connector import ProgrammingError

然后:

except ProgrammingError as error:
    strError = str(error)
    print("Error: ", strError[53:90])
    raise(error)