使用 python 插入 mysql 时如何处理空值

How to handle null values while inserting to mysql with python

我有一本字典,其中一些值可能是 None。如何插入 mysql 数据库。我在下面尝试过,

dict = {'column1': 'test', 'column2': 'test subject', 'Address': None}

query = """insert into tablename (column1,column2,column3) values ('%s', '%s', '%s')""" % (dict['column1'], dict['column1'], dict['column3'])

db_con.execute(query)

但是,它正在将 None 转换为字符串并在数据库中更新。但是,我希望该字段在数据库中为 null。 如何处理 string and None 因为字典中的值是字符串或 None.

基本上,我想处理下面的命令,

dict = {'column1': 'test', 'column2': 'test subject', 'Address': 'test'}

dict = {'column1': 'test', 'column2': 'test subject', 'Address': None}

只需使用准备好的语句,你就会解决它,你也会避免 SQL 注入:

dict = {'column1': 'test', 'column2': 'test subject', 'Address': None}    
query = """insert into tablename (column1, column2, column3) values (%s, %s, %s)"""     
db_con.execute(query, (dict['column1'], dict['column2'], dict['Address']))

编辑 对不起,我没有看到'我已经修改了代码。

此外,在您的字典中,元素的名称是 column1、column2 和 Address,在您的查询中是 column1、column2、column3,因此您必须修改其中一个

删除 %s 周围的单引号。 None 应转换为本机 SQL NULL。

dict = {'column1': 'test', 'column2': 'test subject', 'Address': None}
query = """
  INSERT INTO tablename (column1, column2, column3)
  VALUES (%s, %s, %s)
"""
db_con.execute(query, (dict['column1'], dict['column1'], dict['Address']))