mongo批量插入資料和長鏈結問題

2021-10-06 04:33:08 字數 795 閱讀 6250

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...