Snowflake Python connector执行PUT文件命令报backend参数缺失错误如何解决
问题根因
- 该报错属于
snowflake-connector-python 2.6.2版本的依赖兼容性问题:该版本的PUT文件上传功能依赖pycryptodomex加密库的特定接口,当Python环境中安装的pycryptodomex版本≥3.14.0时,加密类的初始化方法新增了backend必填参数,但2.6.2版本的连接器未适配该参数变更,因此触发TypeError。 - SnowSQL可正常执行是因为它是独立打包的官方客户端,自带适配版本的依赖库,和当前Python环境的依赖版本无关。
解决方案
可根据实际场景选择以下任意一种方案解决:
方案1:固定pycryptodomex版本(无需修改现有代码)
直接卸载当前版本的pycryptodomex,安装适配2.6.2版本连接器的版本即可,执行如下命令:pip uninstall -y pycryptodomex && pip install pycryptodomex==3.13.0
安装完成后重新运行原有代码即可正常执行PUT指令。
方案2:升级snowflake-connector-python到最新稳定版
如果没有强制使用2.6.2版本连接器的要求,直接升级连接器到最新稳定版即可官方修复该依赖适配问题,执行命令:pip install --upgrade snowflake-connector-python
升级完成后原有代码无需修改即可正常运行。
方案3:使用连接器原生文件上传方法(可选,性能更优)
如果后续需要频繁上传文件,也可以使用连接器内置的upload_file方法,避免直接写PUT语句的兼容性问题,参考代码如下:
import snowflake.connector ctx = snowflake.connector.connect( user='lincavo', account='*****', password='*******', database='DEV_POC_VELOS_DB', schema='DATALAB', role='dev_data_analyst' ) # 直接调用连接对象的upload_file方法上传 ctx.upload_file( file_path="/home/lincoln/DEV/snowflake/100003097-SC.json", stage_location="@local_velos_json", auto_compress=False ) ctx.close()
内容的提问来源于stack exchange,提问作者antoine vokleber
相关产品推荐
相关产品推荐

