【问题标题】:Passing nulls to stored procedure in Python将空值传递给 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 值传递给存储过程。

标签: python pymssql


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多