2012-02-07 13 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データの変更を忘れて、自動コミットをデフォルトで無効になっています:

Writing MySQL Scripts with Python DB-API文書の引用
cursor.close() 
    conn.commit() 
    conn.close() 

を「接続オブジェクトは、(コミット)メソッドは、現在のトランザクション内のすべての未処理の変更 をコミット DB-APIでは、接続は自動コミットモードが無効になっているので、 はdisconnecの前にcommit()を呼び出す必要があります。変更または変更が失われる可能性があります。

+0

Aw man。ありがとうございました。そういうことはもう忘れないだろう!もちろん、それは動作します。 (そして、私の質問にすべての手がかりがありました!) –

+2

@JayGattuso、そうです、あなたの質問には答えが含まれています: "しかし、実際にINSERTをコミットすることはできません" – danihp

関連する問題