当我尝试使用准备好的 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 ) )
