2012-02-19 8 views
3

私はpythonスクリプトを使用して、MySQLデータベースに約10個のINSERTsを作成しています。これは、現在の構造である:MySQLdbを使用した複数の実行

conn = MySQLdb.connect (host = DB_HOST, 
         port = DB_PORT, 
         user = DB_USER, 
         passwd = DB_PASSWORD, 
         db = DB_NAME) 
cursor = conn.cursor() 
cursor.execute("INSERT INTO...") 
# do some stuff, then another INSERT 
cursor.execute("INSERT INTO...") 
# do some other stuff, then another INSERT 
cursor.execute("INSERT INTO...") 
etc... 
conn.commit() 
cursor.close() 
conn.close() 

は、複数の挿入を行うための正しい方法を上回っている、または私は各INSERTの後にカーソルをクローズする必要がありますか?それぞれの後にcommitを実行する必要がありますか?

答えて

3

各INSERT後にカーソルを閉じる必要がありますか?

大したことはありません。カーソルは巧みに再利用されます。

リソースを慎重にクローズすることができます。

これを行う。

from contextlib import closing 
with closing(conn.cursor()) as cursor: 
    cursor.execute("INSERT INTO...") 

これにより、どのような例外が発生してもカーソルが閉じられることが保証されます。

各INSERT後にコミットする必要がありますか?

これは、お使いのアプリケーションの期待する内容によって異なります。

「すべてかどうか」という命題の場合、コミットを1回行います。すべてのインサートは良いか、どれもありません。

部分的な結果が受け入れられる場合は、挿入するたびにコミットできます。

関連する問題