Pymysql вставить NULL или строку

Я попытался вставить поле (title) С 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?

2 ответов


1) Никогда не используйте форматирование строк для SQL.

2) попробуйте следующее:

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

измените свой код следующим образом:

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