2013-08-05 38 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