1.大批量資料插入:
當爬蟲獲取的資料量較大時,一條一條的寫入mongodb會過於消耗資源。
這時候就需要用到insert_many()方法,把資料放入列表中並批量插入,但是如果你為了資料不被重複建立了mongodb的唯一索引,就可能會導致部分資料無法寫入。
因為insert_many()預設是按序寫入,一條資料寫入失敗,後面的資料就無法寫入了。所以需要修改預設引數ordered。
當ordered=false時,資料就會被亂序並行插入,所以每個字典的插入操作互不影響
data_list = client.find({},)
client.insert_many(data_list,ordered=false)
2.關於 pymongo.errors.cursornotfound: cursor not found 錯誤的解決方法:
datas = db[『demo』].find({},)
for data in datas:
do_something(data)
該問題出現的原因是do_something函式耗時過長,在cursor上長時間沒有進行操作,引發cursor在mongodb服務端超時。
解決方案:
設定no_cursor_timeout = true,永不超時,游標連線不會主動關閉,需要手動關閉
datas = db[『demo』].find({},,no_cursor_timeout = true)
for data in datas:
do_something(data)
datas.close()
TCP長鏈結和短鏈結
tcp在真正的讀寫操作之前,server與client之間必須建立乙個連線,當讀寫操作完成後,雙方不再需要這個連線時它們可以釋放這個連線,連線的建立通過三次握手,釋放則需要四次握手,所以說每個連線的建立都是需要資源消耗和時間消耗的。tcp通訊的整個過程,如下圖 模擬一種tcp短連線的情況 1.cli...
TCP 短鏈結 和 長鏈結
tcp在真正的讀寫操作 資料傳輸 之前,server與client之間必須建立乙個連線,當讀寫操作完成後,雙方不再需要這個連線時它們可以釋放這個連線,連線的建立通過三次握手,釋放則需要四次握手,所以說每個連線的建立都是需要資源消耗和時間消耗的。tcp通訊的整個過程,如下圖 模擬一種tcp短連線的情況...
批量插入資料
drop procedure if exists pre 如果存在先刪除 delimiter 以delimiter來標記用 表示儲存過程結束 create procedure pre 建立pre 儲存方法 begin declare i int default 12 declare n int de...