2014-06-19 1 views
1

Win 7에서 PyDev로 Eclipse (4.3.2v20140221-1852)의 pyodbc에서 작업하고 있습니다. 파이썬 3.2.5 . 내 코드에서Python의 pyodbc에서 cursor.execute에서 SQL 쿼리를 실행하는 중 오류가 발생했습니다. 3.2.5 onm win 7

:

cursor.execute("select top " + str(1) + " a.my_id, a.mycode" + 
       "from my_table as a where a.mycode = ?", aGivenCode) 

나는 오류를 가지고 :

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver] 
[SQL Server]Incorrect syntax near the keyword 'as'. (156) (SQLExecDirectW)") 

나는 "으로"에서 오류가 발생했습니다 이유는 무엇입니까?

감사합니다.

답변

2

몇 가지 제안 :

  1. 를 사용하여 여러 줄 문자열 표기 """ 구문 오류를 더 잘 식별 할 수 있도록 (원래 쿼리에서 열과 테이블 사이에 누락 된 공간이 있음).

  2. 문자열 연결 대신 TOP 값의 매개 변수를 사용하십시오. 값은} #로 -어야합니다.

    top = 1 
    cursor.execute("""select top (?) a.my_id, a.mycode 
            from my_table as a 
            where a.mycode = ?""", 
           (top, aGivenCode)) 
    
    : 이러한 지침

, 원래의 코드로 업데이트됩니다

1

시험해보세요. 나는 거기에 공간이 없다고 생각합니다 :

cursor.execute("select top " + str(1) + " a.my_id, a.mycode from my_table as a where a.mycode = ?", aGivenCode) 

'a.mycode'와 'from my_table'사이에 공백이 없는지 확인하십시오. 나는 그것이 옳다는 것을 100 % 확신하지는 못했지만 한번 시도해보십시오.

이런 일들은 다음과 같이 디버깅도 쉽게 : 미래 발전을위한

sql = "select top " + str(1) + " a.my_id, a.mycode from my_table as a where a.mycode = ?" 
print sql 
cursor.execute(sql, aGivenCode)