Python中大量插入資料到SQLITE

2021-10-24 16:17:43 字數 1123 閱讀 3424

這是我的第乙個python和sqlte的文章,雖然短小,但相信對遇到的會很有用。

當你需要向sqlite資料庫插入上百萬條資料時,你會怎麼做?

for i in

range(0

,len

(s_list)

):

db.execute(

"insert into txt(txt) values (?)"

,(i,

))

這樣效率奇低,你會怎麼做?

sql=

"insert into txt "

for i in

range(0

,len

(s_list)):

sql+=

"select '%s' union all "

% s_list[i]

.replace(

"'",

"''")if

((i %

499)==0

)or(i==

(len

(s_list)-1

)): sql=sql[0:

-10] db.execute(sql)

sql=

"insert into txt "

細心的朋友注意了,這裡有個499的數字,這是受sqlite 的乙個引數限制sqlite_limit_compound_select=500限制,怎麼改?

我翻遍中英文sqlite文件,終於找到這麼乙個語句,insert insert values(expr-list-1),…,(expr-list-n),my god!,真香。

sql=

"insert into txt values ('"

+"'),('"

.join(s_list)

+"')"

db.execute(sql)

就這麼簡單和美好。

當然,實際應用中,您還會遇到引號的處理,資料庫的各種限制,不過相信我為您提供了乙個簡單的思路。

可能有朋友會問,為什麼不用excutemany呢,那有個bug,我還沒解決。

Python使用SQLite插入大量資料耗時問題

使用python爬蟲 ip時,最先使用了sqlite作為儲存ip資料庫,sqlite簡單 靈活 輕量 開源,和檔案系統一樣。而當大量插入爬取的資料時,出現了嚴重的耗時,檢視一起資料後,發現 sqlite在每條insert都使用commit的時候,就相當於每次訪問時都要開啟一次檔案,從而引起了大量的i...

Oracle 插入大量資料

2.假如tab1表中的沒有資料的話 drop table tab1 create table tab1 as select from tab2 然後在建立索引 3.用hint 提示減少操作時間 4.採用不寫日誌及使用hint提示減少資料操作的時間。建議方案是先修改表為不寫日誌 sql alter t...

Oracle 插入大量資料

2.假如tab1表中的沒有資料的話 drop table tab1 create table tab1 as select from tab2 然後在建立索引 3.用hint 提示減少操作時間 4.採用不寫日誌及使用hint提示減少資料操作的時間。建議方案是先修改表為不寫日誌 sql alter t...