2

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)
4

1 に答える 1

2

既知の問題のようです。

更新:解決策を見つけました。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 を受け入れるようにするには、「null=True」設定が必要であり、「None」は NULL に変換されます。

于 2012-10-17T17:29:00.263 に答える