2015-02-24 22 views
7

NULL veya bir dize olabilecek bir PyMySQL alanı (title) eklemeye çalıştım. Ama işe yaramıyor.PyMySQL Insert NULL veya String

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

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

Bu kod, None veritabanına ekler. İlk %s etrafında çift tırnak kaldırırsanız, bir hata atar:

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

Ben NULL eklemek için ne yapabilirim?

cevap

15

1) Asla SQL için dize formatını kullanmayın. Böyle

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

2) Aşağıdaki deneyin! Şimdi tamam. Çok teşekkürler! – Cronos87

+0

"SQL için dize biçimlendirme kullanmayın" derken ne demek istiyorsunuz? Ben OP'ye benzer bir şey yapmak, bir mysql acemi değilim. – ScheissSchiesser

+1

@ScheissSchiesser, sql enjeksiyonuna yol açabilir. Yani – Retard

-1

Değişim Kodunuzdaki: Müthiş

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

umm, tamam, bir yıl sonra hemen hemen aynı cevap – Kirby