2011-10-19 5 views
2

pyODBC를 사용하여 SQL Server 2005 Express 데이터베이스에 연결하고 있습니다. SQLServer Express에서 2 개의 문자열 매개 변수 (예 : stored_proc (inpu1, input2))를 사용하는 저장 프로 시저를 만들었습니다. 이러한 매개 변수는 datetime 유형입니다. 나는 관리 스튜디오를 사용하여 저장된 proc을 테스트했으며 적절한 결과를 반환합니다. 그러나 파이썬 (나는 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을 trued,하지만 난

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

충돌없이 작동하는 잘못된 구문이

+0

나는 조금 놀았 던과 local_cursor.execute 발견" } ", [dt_start], [dt_end]) 기본적으로 구문은"stored_proc (?), call [ params]. 이제는 생각 합니다만, Python.exe에서 처리되지 않은 Win32 예외가 발생합니다. 누구든지 파이썬 2.7을 사용하여 창에서 pyODBC와 함께 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

관련 문제