PyMySQL 插入 NULL 或字符串
Posted
技术标签:
【中文标题】PyMySQL 插入 NULL 或字符串【英文标题】:PyMySQL Insert NULL or a String 【发布时间】: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?
【问题讨论】:
【参考方案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
任何输入就可以了.有错吗?以上是关于PyMySQL 插入 NULL 或字符串的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL - 我有啥办法可以定义一个在插入或更新时将空字符串转换为 null 的列?