Python MySQLdb的execute和executemany的使用


如果使用executemany對數據進行批量插入的話,要注意一下事項:

conn = MySQLdb.connect(host = “localhost”, user = “root”, passwd = “password”, db = “myDB”, charset=’utf8′)
cursor = conn.cursor()
sql = “insert into myTable (created_day,name,count) values(%s,%s,%s) ON DUPLICATE KEY UPDATE count=count+values(count)”
args=[("2012-08-27","name1",100),("2012-08-27","name1",200),("2012-08-27","name2",300)]
try:
cursor.executemany(sql, args)
except Exception as e:
print0(“執行Mysql: %s 時出錯:%s” % (sql, e))
finally:
cursor.close()
conn.commit()
conn.close()

這里args是一個包含多個元組的數組,每個元組對應mysql當中的一條數據,注意這里的created_day對應的%s沒有引號。這里推測executemany自己首先對sql語句進行正則匹配%s然后在此基礎上,對字符串進行嵌入處理,如果這里%s加上引號的話,插入mysql當中會出現”0000-00-00″類型的錯誤日期。

如果一次性要插入很多條數據的話,在這里強烈 推薦使用executemany,從自己體會來講,一條一條的insert需要2-3個小時時間的數據插入,使用executemany只需要2-3秒!!!

 

在這里executemany和ON DUPLICATE KEY UPDATE聯合使用的時候如果按照sql常規模式,即:sql=”insert into myTable (created_day,name,count) values(%s,%s,%s) ON DUPLICATE KEY UPDATE count=count+%s”會報bug:not all arguments converted during string formatting。 


免責聲明!

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



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