把幾個大的檔案的內容讀到資料庫中。
檢視了手冊open方法,首先想到了seek()方法,和fread()方法讀到一段內容來執行插入。
大概說一下方法吧。
一 取資料
取一段內容,以回車(\n)分隔內容為資料,批量插入資料庫
如要讀取檔案內容如下:
abcd
efgh
ijkl
mnop
按13個字元取內容
root_path = os.path.abspath('./') + os.sep
f = open(root_path + 'file/pass.txt', 'r')
f.seek(0)
line = f.read(13) #從檔案中讀取一段內容
輸出如下:(回車[\n]佔乙個字元)
abcd
efgh
ijk
轉換為陣列後
l = ['abcd', 'efgh', 'ijk']
此時插入資料庫內容為
['abcd', 'efgh']
將最後一條資料快取 t = l.pop()
下一次迴圈得到陣列為
l = ['l', 'mnop']
此時將第一條資料和快取的資料合併
l[0] = t + l[0]
並快取陣列最後一條資料
二 插入資料
插入資料,使用批量插入
最開始的時候我拼好sql語句如:insert into xx(`a`) values(1),(2),(3)...
然後呼叫mysql-python的方法
conn = mysql.connector.connect(host='127.0.0.1', database='***', user='***', password='***')
conn.cursor().execute(sql)
結果執行了大概2萬多就報lost connection to mysql server錯誤了。後來我看mysql-python裡面的**原來批量插入資料有封裝好的方法是
conn.cursor().execute(sql)
data = [
('jane','555-001'),
('joe', '555-001'),
('john', '555-003')
]stmt = "insert into employees (name, phone) values (%s,%s)"
cursor.executemany(stmt, data)
注意以上兩點後,上**:
python 讀取大檔案
以前一直沒有關注過python讀取大檔案的問題,因為一直都是順順暢暢地讀取了檔案。直到今天有人問我python怎麼讀取檔案出現了記憶體不足的錯誤?我才發現原來大檔案 gb級別 的讀取和普通檔案的讀取是不一樣的。下面介紹三種我親測可用的方法。這裡的檔案型別可以是txt,dat等型別的檔案。用read ...
python讀取大檔案
最近在學習python的過程中接觸到了python對檔案的讀取。python讀取檔案一般情況是利用open 函式以及read 函式來完成 f open filename,r f.read 這種方法讀取小檔案,即讀取遠遠大小小於記憶體的檔案顯然沒有什麼問題。但是如果是將乙個10g大小的日誌檔案讀取,即...
python讀取大檔案 python讀取大檔案
python讀取檔案對各列進行索引 可以用readlines,也可以用readline,如果是大檔案一般就用readlined a in open testfile.txt r for line in a in columnssplit line.rstrip split d columnsspli...