【问题标题】:PyMySQL Insert NULL or a StringPyMySQL 插入 NULL 或字符串
【发布时间】:2015-04-26 05:58:10
【问题描述】:

我尝试使用 PyMySQL 插入一个字段 (title),它可以是 NULL 或字符串。但它不起作用。

query = """
    INSERT INTO `chapter` (title, chapter, volume)
    VALUES ("%s", "%s", %d)
"""

cur.execute(query % (None, "001", 1))
cur.execute(query % ("Title", "001", 1))

此代码将None 插入到数据库中。如果我删除第一个 %s 周围的双引号,则会引发错误:

pymysql.err.InternalError: (1054, "Unknown column 'None' in 'field list'")

如何插入 NULL?

【问题讨论】:

    标签: python mysql pymysql


    【解决方案1】:

    1) 切勿对 SQL 使用字符串格式。

    2) 尝试以下操作:

    query = """
    INSERT INTO `chapter` (title, chapter, volume)
    VALUES (%s, %s, %s)
    """
    cur.execute(query, (None, "001", 1))
    

    【讨论】:

    • 太棒了!现在没事了。非常感谢!
    • 你说“从不使用 sql 的字符串格式”是什么意思?我是一个mysql初学者,做一些类似于OP的事情。
    • @ScheissSchiesser,可能会导致sql注入。所以最好使用上面代码示例中的参数绑定
    • 如果你希望None 出现在数字列中,比如上面的volume
    • 哦...我已经为 SQL 使用字符串格式很长一段时间了...我认为只要我使用 bleach 模块到 bleach.clean 任何输入就可以了.有错吗?
    猜你喜欢
    • 2018-10-14
    • 2023-03-10
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 2016-06-23
    • 2013-09-13
    • 2012-07-18
    相关资源
    最近更新 更多