2014-11-06 1 views
0

일부 처리 결과를 SQL Server 테이블에 쓰려고합니다. 내 결과는 목록의 각 항목이 목록 인 목록의 목록에 저장됩니다. 매개 변수 (6 매개 변수)를 사용하고 있는데 다음 오류가 발생합니다.Python (pyodbc)의 매개 변수 쿼리에 대한 구문

cnxn.execute (sqlStatement, (item [0], item [1], item [2], item [3], item [4 ], 항목 [5])) pyodbc.ProgrammingError는 ('는 SQL 0 매개 변수 표시 문자가 포함되어 있지만 6 개 매개 변수를 제공했다', 내 코드의 'HY000')

sqlStatement = "INSERT INTO CEA_CR (`SessionID`, `Session.Call_TYPE_Assigned`, `Session.Did_Call_Type_happen_on_this_call`, `Session.Was_there_a_system_or_Rep_generated_Memo_that_matches_with_Call_Type` , 'cycle' , 'version') VALUES (%s, %s, %s, %s ,%s ,%s)" 

for item in result: 
    wr.writerow(item) 
    cnxn.execute(sqlStatement, (item[0],item[1],item[2],item[3],item[4],item[5])) 
    cnxn.commit() 

사람은 이유를 알고 내 처형은 실패하니?

+2

당신이 사용중인 SQL 드라이버 모르겠지만, 매개 변수 교체는'안'대신'%의 s'의? https://code.google.com/p/pyodbc/wiki/GettingStarted – RickyA

답변

2

당신이 사용해야합니까? 나는 매개 변수 마커로서 나는 믿는다.

귀하의 SQL은 아마 다음과 같아야합니다 :

sqlStatement = "INSERT INTO CEA_CR (SessionID, Session.Call_TYPE_Assigned, Session.Did_Call_Type_happen_on_this_call, Session.Was_there_a_system_or_Rep_generated_Memo_that_matches_with_Call_Type, cycle, version) VALUES (?, ?, ?, ?, ?, ?)" 
+0

내 진술을 수정했습니다 : sqlStatement = "INSERT INTO CEA_CR ('SessionID','Session.Call_TYPE_Assigned','Session.Did_Call_Type_happen_on_this_call','Session. 오류 메시지 : " '' '근처의 구문이 올바르지 않습니다. – user4045430

+0

Nonnib에 응답 한 것처럼 보입니다. (예 :', ','? ',' 원래의 질문. 어쩌면이 대답을 받아 들여서 새 질문을해야할까요? 완전하지만 최소한의 코드 예제를 게시하면 완전히 정확한 답을 제공하는 것이 더 쉽습니다. –

+0

이 유형의 상황에서 일반적으로 사용되는 방법은 문제가 해결 될 때까지 모든 것을 시도하고 단순화하는 것입니다. 작동 할 때까지 물건을 제거하십시오. 그 시점에서 문제가있는 곳을 정확히 알 수 있습니다. –

관련 문제