传递空到存储过程在Python(Passing nulls to stored procedure

2019-08-01 14:00发布

我使用Python来调用我的MSSQL数据库的存储过程,但它不喜欢通过“无”值。 这也许是pymssql的错误吗? 或者是有一些方法,以确保“无”被转换成空? 我需要能够传递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)

Answer 1:

它看起来就像是一个已知的问题 。

更新:我找到了解决办法。 虽然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。



文章来源: Passing nulls to stored procedure in Python