Skip to main content
 首页 » 编程设计

python mysqldb使用准备好的语句插入NULL

2025年05月04日39webabcd

当我尝试使用准备好的 mysqldb 语句将 NULL 插入字段时,我遇到了 python 问题。问题是 python 不喜欢不带引号的 NULL 而 MySQL 不喜欢带引号的 'NULL';所以我试图找到一种方法来插入 python 和 MySQL 都允许的 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 ) ) 

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

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

请您参考如下方法:

使用 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 ) )