2013-08-05 3 views
1

NULL을 준비된 mysqldb 문을 사용하여 필드에 삽입하려고하면 파이썬에 문제가 있습니다. 문제는 파이썬은 따옴표없이 NULL을 좋아하지 않는다는 것과 MySQL은 따옴표가있는 'NULL'을 좋아하지 않는다는 것입니다. 그래서 파이썬과 MySQL 모두 허용 할 NULL을 삽입하는 방법을 찾으려고합니다. 이것은의 파이썬 오류가 발생파이썬 mysqldb가 준비된 문을 사용하여 NULL을 삽입합니다.

sqlFailInsert = """INSERT INTO efix_headers (PathID) VALUES (%s);""" 
    //then later in my code 
    failcur = self.db.query(self.sqlFailInsert, (pathID if pathID else NULL)) 

: global name 'NULL' is not defined을하지만 사용할 때 : 여기 내 시나리오 pathID if pathID else 'NULL' MySQL은 문자열로 취급합니다 (그런데, pathID 필드는 정수 필드)와 값 0 입력 (int 필드에 문자열을 입력해야하는 것처럼).

제 질문은, 준비된 문을 사용하여 int 필드에 NULL을 삽입하고 파이썬 규칙을 위반하지 않는 방법은 무엇입니까?

답변

5

사용 None 대신 NULL

sqlFailInsert = """INSERT INTO efix_headers (PathID) VALUES (%s);""" 
//then later in my code 
failcur = self.db.query(self.sqlFailInsert, (pathID if pathID else None)) 
+0

그리고 MySQL은 자동으로 NULL로 '없음'을 평가하는 것? – sadmicrowave

+1

예. "SQL NULL 값은 입력 및 출력에서 ​​Python None singleton으로 나타납니다." 자세한 정보 : http://www.python.org/dev/peps/pep-0249/ – GreyZmeem

관련 문제