2010-11-26 2 views
2

저는 Linux에서 Python으로 데이터베이스 프로그래밍을 수행하기 위해 pymssql을 사용하고 있습니다.pymssql 문제 - INSERT가 매개 변수와 함께 작동하지 않습니다.

매개 변수를 쿼리에 전달하는 데 문제가 있습니다. 이 문제는 INSERT 쿼리와 함께있는 것 같습니다.

query = "SELECT col1, col2 FROM table WHERE col3=%s" 
cur.execute(query, (value,)) 

을하지만이되지 않습니다 :

이 작동 INSERT 쿼리가 작동하지 않습니다 이유

query = "INSERT INTO table (col1, col2) VALUES (%s, %s)" 
cur.execute(query, (value1, value2,)) 

어떤 생각을? 이것에 대해

Traceback (most recent call last): 
    File "test.py", line 46, in ? 
    cur.execute(query, (value1, value2,)) 
    File "/usr/lib/python2.4/site-packages/pymssql.py", line 126, in execute 
    self.executemany(operation, (params,)) 
    File "/usr/lib/python2.4/site-packages/pymssql.py", line 152, in executemany 
    raise DatabaseError, "internal error: %s" % self.__source.errmsg() 
pymssql.DatabaseError: internal error: None 
+0

Fedora 13과 함께 제공되는 MySQL-python 1.2.3에서도 동일한 예제가 작동합니다. – MarkR

+2

실제로 MySQL에서는 작동하지만 MSSQL을 사용하고 있습니다. : – infrared

+0

변수 값 1과 값 2의 실제 값은 무엇입니까? – Pondlife

답변

1

내가 형 유니 코드이었다 삽입하려고했던 값 중 하나 밝혀 여기

는 역 추적입니다. str(value1)을 사용하여 문자열로 변환하면 쿼리가 작동합니다.

-1

방법 :

cur.execute(query % (value1, value2)) 
+3

아니요, 그건 방법이 아닙니다. dbi-api가 사용되어 SQL 인젝션 취약점으로 이어질 것입니다. – MarkR

+0

잘 알고 있습니다. - 고마워요. – VKolev

관련 문제