在Python中将空值传递给存储过程

时间:2012-10-17 15:52:18

标签: python pymssql

我正在使用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)

1 个答案:

答案 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。