2015-02-24 132 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