2015-02-24 85 views
7

我试图插入一个字段(title)与PyMySQL可以是NULL或字符串。但它不起作用。PyMySQL插入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?

回答

15

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

2)请尝试以下操作:

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

真棒!现在没事了。非常感谢! – Cronos87 2015-02-24 15:02:20

+0

当你说“从不使用字符串格式化sql”时,你是什么意思?我是一个mysql初学者,正在做类似于OP的事情。 – ScheissSchiesser 2015-12-23 19:59:31

+1

@ScheissSchiesser,它可能导致sql注入。所以最好使用像 – Retard 2016-09-09 09:44:33

-1

更改你的代码是这样的:

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

恩,好吧,一年后的答案几乎相同 – Kirby 2017-04-27 04:37:26