python mysql多條插入


程序的目的是把文本里面的數據存儲到數據庫中,原來的思路是讀一條,插入一條,結果就是時間長的不得了。。。18萬條的數據,真是慢。

后來的想法是把所有的記錄都讀到一個list里,結果是mysql奔潰go away,畢竟18萬條,太多了。

再后來的想法就是滿1000條進行一次插入,O(∩_∩)O哈哈~,效果不錯,mysql沒崩潰,效率提高了好幾個量級。

import MySQLdb
import
codecs def FileToDatabase(file): conn = MySQLdb.connect(host='yourhost',user='username',passwd='yourpwd',db='yourdb') curs = conn.cursor() fp = codecs.open(file,'r','gb2312')#文本編碼是gb2312,所以以此方式打開 i = 0 L = [] for eachline in fp: i = i + 1 list = newline.split(',') L.append(list) if i % 1000 == 0:#滿1000插入數據庫 #try:executemany好像不能使用字符串變量如executemany(sql),如此導致插入失敗,還有就是插入整型的時候也不能使用%d,而是%s...
       #當插入的字段並非table的全部字段時,要指定插入的字段及順序與value內的值一致
curs.executemany("insert into season1(word1,word2,word3,word4) values(%s,%s,%s,%s)",L) conn.commit()#沒有提交的話,無法完成插入 L = [] #except: conn.rollback()
print 'No.:'+str(i) #print newline fp.close() #try:#將剩余插入數據庫 curs.executemany("insert into season1(word1,word2,word3,word4) values(%s,%s,%s,%s)",L) conn.commit() #except: conn.rollback() conn.close()

對於數據庫的rollback還是不太理解,以后有機會再深入了解吧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM