【问题标题】:How to handle null values while inserting to mysql with python使用python插入mysql时如何处理空值
【发布时间】:2020-10-23 06:25:42
【问题描述】:

我有一本字典,其中一些值可能为无。如何插入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 转换为字符串并在数据库中更新。但是,我希望该字段在 DB 中为 null。 如何处理string and None,因为字典中的值要么是字符串要么是无。

基本上,我想同时处理以下两个字典,

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

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

【问题讨论】:

    标签: python mysql sql-insert


    【解决方案1】:

    只需使用准备好的语句,你就会解决它,你也将避免 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,因此您必须修改其中一个

    【讨论】:

    • 获取TypeError: not enough arguments for format string
    【解决方案2】:

    删除 %s 周围的单引号。无应转换为本机 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']))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多