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

sad*_*ave 1 python null insert prepared-statement mysql-python

当我尝试NULL使用准备好的mysqldb语句插入字段时,我遇到了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 ) )
Run Code Online (Sandbox Code Playgroud)

这会生成python错误:global name 'NULL' is not defined但是当我使用时:pathID if pathID else 'NULL'MySQL将其视为一个字符串(顺便说一下,pathID字段是一个整数字段)并输入0值(如果你在int字段中输入一个字符串就应该这样) .

所以,我的问题是,如何NULL使用预准备语句插入int字段而不违反python规则?

Gre*_*eem 6

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 ) )
Run Code Online (Sandbox Code Playgroud)