将空值传递给 Python 中的存储过程
Posted
技术标签:
【中文标题】将空值传递给 Python 中的存储过程【英文标题】:Passing nulls to stored procedure in Python 【发布时间】:2012-10-17 15:52:17 【问题描述】:我正在使用 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)
【问题讨论】:
在谷歌上的搜索提出了这个pymssql.sourceforge.net/limitations.php (已经从页面名称中它应该响起)并且正如他们在这里建议的那样,为 NULL 字段提供默认值并对其进行检查为了避免它......我不是专家顺便说一句,这就是我评论的原因:) 我需要能够将 NULL 值传递给存储过程。 【参考方案1】:它看起来像是一个已知的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。
【讨论】:
以上是关于将空值传递给 Python 中的存储过程的主要内容,如果未能解决你的问题,请参考以下文章
如何将 vb.net 中日期的空值传递给 sql 存储过程?
通过数据库上下文将空 DataTable 传递给 SQL Server 存储过程