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

使用pypyodbc执行SQL插入时报参数类型TypeError如何解决

问题根因

报错是Python元组语法的常见坑导致的:你代码里写的record = (id_s)并不是元组类型。Python语法规定,单元素元组必须在元素后加尾随逗号,否则括号只会被识别为普通的运算优先级符号,(id_s)等价于直接写id_s,传入cursor.execute的参数不是要求的列表/元组/Row类型,就会触发对应报错。
你可以自行执行简单测试验证这个语法特性:

print(type((100)))  # 输出 <class 'int'>,不是元组
print(type((100,))) # 输出 <class 'tuple'>,才是合法的元组
修复方案

二选一修改record的定义即可:

  • 方案1:补全单元素元组的尾随逗号
record = (id_s,)
  • 方案2:直接用列表传参,不需要考虑元组逗号的语法坑
record = [id_s]

修复后的完整可运行代码:

create_query = """INSERT INTO bcmdb.bcmdbuser.Groups (ParentGroupID, ChildGroupID, DirectChild) 
                           VALUES (100, ?, 0) """
record = (id_s,)
cursor.execute(create_query, record)
conn.commit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:54:34