2012-02-19 93 views
3

我有一個python腳本,可以將大約10個INSERTs轉換爲MySQL數據庫。這是其目前的結構:使用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後我應該關閉遊標?我應該在每個INSERT之後做commit

回答

3

我應該在每次INSERT後關閉遊標嗎?

它並不重要。遊標被巧妙地重用。

你可以關閉它們來超級注意你的資源。

這樣做。

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

這確保無論發生什麼樣的異常,光標都會關閉。

我應該在每次INSERT後做一次提交嗎?

這取決於您的應用程序預計要做什麼。

如果這是一個「全部或全部」的提議,那麼你做一個提交。所有的插入物都很好,或者都不是。

如果部分結果可以接受,那麼您可以在每次插入後提交。