2016-02-28 187 views
0

我閱讀了sqlite3模塊(https://docs.python.org/2/library/sqlite3.html)的基礎知識,它允許您連接到數據庫中的.db文件,然後執行普通的SQL命令,但是我想知道是否有可能將.db文件讀入列表,數組或列表的字典中。從本質上講,我試圖做的unicodecsv或csv模塊做的同樣的事情,但與.db文件。將.db文件讀入Python

如果您想知道我爲什麼試圖這樣做:我將轉換數據,並且它將更容易使用數組來一次計算整個列。如果您需要任何澄清,請讓我知道。

+0

這是不可行的讀取SQLite3的數據庫而不使用庫。寫一些'SELECT * FROM table'查詢是很簡單的。 –

回答

0

Breakbotz, 對於讀取db文件列表(不使用sql命令),我對你的意思有點困惑。我相信這個文件是一個二進制文件,格式爲here。所以如果你真的想,你可以創建一個解析器來閱讀它,但是強烈建議不要這樣做。

如果您閱讀了sqlite3文件的全部內容,然後將所有這些信息加載到列表列表中,那麼即使您擁有足夠的內存,您仍然將所有這些內容存儲在內存中,但這並不是最好的它,特別是如果數據是巨大的。其次,一旦你從sqlite3模塊獲得遊標,你可以使用選擇參數一次性填充列表,塊的列表,以過濾可能在某個時間工作的列,而這些列可能是值得的比試圖解析sqlite3文件。

如果我誤解了你正在嘗試做的事情,至少它的範圍,我很抱歉,但我認爲這個鏈接可能會幫助你解析數據。我沒有自己嘗試過。

0

您需要遍歷所有的表格,並轉換爲上市,這是完全未經測試的代碼,但你需要做的應該給你的一個想法:

import sqlite3 

def importdb(db): 
    conn = sqlite3.connect(db) 
    c = conn.cursor() 
    c.execute("SELECT name FROM sqlite_master WHERE type='table';") 
    for table in c.fetchall() 
     yield list(c.execute('SELECT * from ?;", (table[0],)))