2012-10-17 92 views
2

我使用Python調用MSSQL數據庫中的存儲過程,但它不喜歡傳遞「None」值。這可能是pymssql中的一個錯誤?或者有什麼方法可以確保「無」轉換爲NULL?我需要能夠通過NULL。將空值傳遞給Python中的存儲過程

示例代碼:

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

'「無」或「無」? – swasheck

+2

在谷歌搜索引發了這個http://pymssql.sourceforge.net/limitations.php(已經從頁面名稱它應該響鈴),並如他們在這裏建議,給NULL字段的默認值,並做一個檢查,以避免它...即時通訊沒有專家順便說一句,這就是爲什麼我評論:) –

+0

我需要能夠傳遞一個NULL值到存儲過程。 – Mike

回答

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。

相關問題