2012-02-07 31 views
6

我想弄清楚如何在Python中使用MySQLdb庫(我是最好的新手爲他們)。爲什麼'insert'函數不使用MySQLdb添加行?

我下面的代碼here,具體是:

cursor = conn.cursor() 
cursor.execute ("DROP TABLE IF EXISTS animal") 
cursor.execute (""" 
    CREATE TABLE animal 
    (
    name  CHAR(40), 
    category CHAR(40) 
    ) 
""") 
cursor.execute (""" 
    INSERT INTO animal (name, category) 
    VALUES 
    ('snake', 'reptile'), 
    ('frog', 'amphibian'), 
    ('tuna', 'fish'), 
    ('racoon', 'mammal') 
""") 
print "Number of rows inserted: %d" % cursor.rowcount 
cursor.close() 
conn.close() 

我可以改變這個代碼來創建或刪除表,但我不能讓它真正提交INSERT。它按預期返回row.count的值(即使當我更改表中的值時,它也會改變爲我所期望的值)。

每次我用PHPMyAdmin查看數據庫時,都沒有插入。如何將INSERT提交到數據庫?

回答

15

你忘了commit數據的變化,自動提交默認情況下禁用:

cursor.close() 
    conn.commit() 
    conn.close() 

報價Writing MySQL Scripts with Python DB-API文檔:

「連接對象的commit()方法提交在當前事務中任何未完成的更改 以使它們在數據庫中永久存在。在 DB-API中,連接以禁用自動提交模式開始,因此必須在調用commit()之前斷開連接或者更改可能會丟失。「

+0

胡男。謝謝。這是一個我不會忘記的教訓!當然,這是有效的。 (我的問題中有所有線索!嘆息。) – 2012-02-07 08:35:41

+2

@JayGattuso,你是對的,你的問題包含答案:「但我不能讓它實際提交INSERT」 – danihp 2012-02-07 08:49:09

相關問題