python executemany的使用,pythonexecutemany

來源:互聯網
上載者:User

python executemany的使用,pythonexecutemany

使用executemany對資料進行批量插入的話,要注意一下事項:

 1 #coding:utf8 2  3 conn = MySQLdb.connect(host = “localhost”, user = “root”, passwd = “123456”, db = “myDB”) 4 cursor = conn.cursor() 5 sql = “insert into myTable (created_day,name,count) values(%s,%s,%s) ON DUPLICATE KEY UPDATE count=count+values(count)” 6 args=[("2012-08-27","name1",100),("2012-08-27","name1",200),("2012-08-27","name2",300)] 7 try: 8     cursor.executemany(sql, args) 9 except Exception as e:10     print0(“執行MySQL: %s 時出錯:%s” % (sql, e))11 finally:12   cursor.close()13   conn.commit()14   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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.