2

我正在使用 Python 调用我的 MSSQL 数据库中的存储过程,但它不喜欢传递的“无”值。这可能是 pymssql 中的错误吗?或者有什么方法可以确保将“None”转换为 NULL?我需要能够传递 NULL。

示例代码:

cn = pymssql.connect(my connection info)
cur = cn.cursor()
params = range(2)
params[0] = 1
params[1] = None # this needs to pass as NULL
cur.callproc('mystoredproc', params)
4

1 回答 1

2

看起来这是一个已知问题

更新:我找到了解决方案。虽然 pymssql 模块确实需要修复,但我可以使用它附带的 _mssql 模块并调用较低级别的例程。

例子:

import _mssql
conn = _mssql.connect(connection info, syntax is slightly different than pymssql)
proc = conn.init_procedure('mystoredproc')
proc.bind(1, _mssql.SQLINT4, name='@firstparam')
proc.bind(None, _mssql.SQLINT4, name='@secondparam', null=True)
proc.execute()

需要“null=True”设置以允许此参数接受空值,并且“None”将被转换为 NULL。

于 2012-10-17T17:29:00.263 回答