You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

切换至Snowflake后Python邮件发送应用无法发件的问题排查

问题解决:Snowflake execute参数导致TypeError

错误根源

报错TypeError: object of type 'int' has no len()是因为Snowflake Python连接器要求execute方法的参数必须是序列类型(元组、列表等),但你传入的(retailer[0])并不是元组——括号在这里仅作为优先级符号,实际传递的是单个int对象,连接器尝试获取其长度时触发错误。

而之前SQL Server能正常运行,是因为SQL Server的连接器(如pyodbc)允许直接传递单个参数,不需要包装成序列,两者的参数处理规则存在差异。

修复方案

修改execute语句的参数部分,将单个参数包装成带逗号的元组(元组定义必须有逗号区分单个元素和普通括号),或者用列表:

方案1:使用带逗号的元组

c.execute("""SELECT Retailer, Retailer_Name, Contact, E_Mail, Account_ID, Password FROM Retailers WHERE Retailer =? """, (retailer[0],))

方案2:使用列表

c.execute("""SELECT Retailer, Retailer_Name, Contact, E_Mail, Account_ID, Password FROM Retailers WHERE Retailer =? """, [retailer[0]])

额外验证

确保retailer[0]的类型与Snowflake表中Retailer字段的类型一致(比如都是整数),避免后续出现类型不匹配的查询问题。

内容的提问来源于stack exchange,提问作者Calogero Savarino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:50:29