我正在使用Python在我的MSSQL数据库中调用存储过程,但它不喜欢传递的“None”值。这可能是pymssql中的一个错误吗?或者有没有办法确保“无”转换为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)
答案 0 :(得分:2)
看起来它是一个已知的issue。
更新:我找到了解决方案。虽然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。