2011-10-19 28 views
2

私はpyODBCを使用してSQL Server 2005 Expressデータベースに接続しています。私はSQLServer Expressの中にstored_proc(inpu1、input2)という2つの文字列パラメータを持つストアドプロシージャを作成しました。これらのパラメータはdatetime型です。私は管理スタジオを使用して格納されたprocをテストし、適切な結果を返します。しかし、私はpython(私はEclipseを使用している)からストアドプロシージャを呼び出すときにエラーが発生します。PyODBCを使用してストアドプロシージャにパラメータを渡す

pyodbc.DataError: ('22018', '[22018] [Microsoft][SQL Native Client]Invalid character value for cast specification (0) (SQLExecDirectW)')2/9/2011 12:00:03 2/9/2011 12:20:03

次のように私が呼んでいる機能は次のとおりです。

def GetAlarmFrequencyTime(tstart,tend): 

print tstart, tend 
arguments=(tstart,tend) 
local_cursor=conn.cursor() 
local_cursor.execute("{call dbo.GetAlarmEventHistoryFrequency_TimeRange(tstart,tend)}") 

resultset_rows=local_cursor.fetchall() 
print "There are" , len(resultset_rows), "records" 
for single_row in resultset_rows: 
    print "|" ,single_row[0], "|" ,single_row[1],"|" 

local_cursor.close() 

トラブルを引き起こしている行が

local_cursor.execute("{call dbo.GetAlarmEventHistoryFrequency_TimeRange(tstart,tend)}") 

で誰も私が私がに複数のパラメータを渡すことができる方法を理解するのに役立つことができますpyODBCを使用して呼び出されるストアドプロシージャ tstartを変換する必要がありますか?そうであれば、まずdatetime形式になりますか?私はのstrptimeを揃えているが、私は

local_cursor.execute("{call dbo.GetAlarmEventHistoryFrequency_TimeRange(tstart,tend)}")

をクラッシュすることなく動作するように、私はついにそれを得た間違った

+0

は、私は少しプレーしてきたとlocal_cursor.executeを見つけました" } "、[dt_start]、[dt_end]) 基本的に構文は" stored_proc(?)、 params]。今はこれだと思いますが、Python.exeでUnhandled Win32例外が発生しました。 Python 2.7を使用して誰かがpyODBC with experirenceを持っていますか? – user595985

答えて

4

を、それを使用している可能性が間違って構文ですが、でもそれは、成功していません。それは

local_cursor.execute("{call dbo.GetAlarmEventHistoryFrequency_TimeRange(?,?)}",(tstart),(tend))

特別な注意が特殊記号{}とパラメータは(TSTART)に渡される方法になされるべきである必要があり、(傾向)local_cursor.execute(」* { *はdbo.GetAlarmEventHistoryFrequency_TimeRangeを呼び出します"(?、?dbo.GetAlarmEventHistoryFrequency_TimeRangeを(呼び出し)* } (?、?)、(傾向)、(TSTART)*

+0

あなたの答えをありがとう。上記の手順に従いましたが、エラーが発生し続けます: "error_message": "文字列の書式設定中にすべての引数が変換されない" – Muniu

関連する問題