Python: 数据类型无效(0)(SQLBindParameter)

5

我正在使用Python 2.7来做一项具体的工作。我正在使用FreeTDS连接到MSSQL Server(2008)。 我可以执行一些简单的SELECT查询,但当我尝试运行参数化查询时,出现了错误:

('HY004', '[HY004] [FreeTDS][SQL Server]Invalid data type (0) (SQLBindParameter)')

这是我的查询语句:
query = u"UPDATE table SET column1=? WHERE column2=?"
cursor.execute(query,[param1, param2])

然而,在实际应用中,同样的代码却可以正常运行。我已经在各个论坛浏览了很多帖子,但它们似乎都是误导性的,我真的很困惑。您认为我的实际问题是什么,您有什么建议吗?编辑:我已经添加了查询。

请分享实际的代码,包括您尝试执行的查询。 - Martijn Pieters
@Martijn Pieters,感谢您的关注。我已经更新了问题并添加了查询。 - huzeyfe
1
参数1和参数2中包含什么? - seriyPS
哦,抱歉我应该说param1是Unicode字符串(<type 'unicode'>),param2是整数。 - huzeyfe
这可能是相同的问题:https://dev59.com/NHNA5IYBdhLWcg3wdtz5 - Faruk Sahin
显示剩余2条评论
1个回答

11

我知道这是一个非常老的帖子,但我遇到了相同的问题,我的解决方法是将变量进行类型转换,例如:

query = u"UPDATE table SET column1=? WHERE column2=?"

cursor.execute(query,[str(param1), str(param2)])

在这种情况下,参数的类型并不重要,因为它会被转换为字符串。


1
这非常有帮助。 - Plato77
2
有趣的是,两年后我又遇到了同样的问题,并找到了自己的答案...虽然不能给自己点赞.. - Matt Binford
那就给你一个,虽然不是完全相同的情况,但是让我找到了答案(我的一个存储过程参数是一个表类型,其中有一个非空列,而我在某些记录中传递了一个NULL值)。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接