2013-08-05 56 views
1

我遇到蟒蛇問題,當我嘗試插入NULL到使用準備MySQLdb的語句字段中插入NULL。問題是python不喜歡沒有引號的NULL,然後MySQL不喜歡帶引號的'NULL';所以我試圖找到一種插入NULL的方法,python和MySQL都允許。這是我的情景:蟒蛇MySQLdb的使用事先準備好的聲明

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

這產生的一個python錯誤:global name 'NULL' is not defined但是當我使用:pathID if pathID else 'NULL'的MySQL把它當作一個字符串(順便說一下,PATHID字段是整型字段)和值進入0 (因爲它應該,如果你輸入一個字符串到一個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單獨表示」。更多信息,請訪問:http://www.python.org/dev/peps/pep-0249/ – GreyZmeem