python mysqldb使用预准备语句插入NULL

时间:2013-08-05 18:22:03

标签: python insert null prepared-statement mysql-python

当我尝试使用准备好的mysqldb语句将NULL插入字段时,我遇到了python问题。问题是python不喜欢NULL没有引号,然后MySQL不喜欢'NULL'引号;所以我试图找到一种方法来插入NULL,python和MySQL都允许。这是我的情景:

    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插入int字段而不违反python规则?

1 个答案:

答案 0 :(得分: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 ) )