2011-11-06 65 views
5

我只是好奇,如果任何人都可以告訴我,如果使用SQLite存儲字典(如蠻力)用於Python腳本是一種有效的方法。雖然我對Python相對比較陌生,但對其他編程語言有相當多的經驗,目前正在使用Backtrack中的筆測工具。到目前爲止,我對Python的速度和簡單性印象深刻,而且我的SQL查詢似乎很理想地爲我的強力工具返回所需的前綴。但是,我想我想知道的是在Python中存儲大型數據文件的標準是什麼?我是否忽略了一種更好(更快)的存儲我的前綴的方式,僅僅是因爲我對SQL的安慰?請記住,我沒有使用Python查詢ID 0到n並使用它們,而是使用Python來縮小可能性並查詢符合條件的字典條目。任何幫助或意見將不勝感激!SQLite通過Python速度有多快

+0

你想要多快?數據集MB,GB和TB有多大? 「前綴」與「前綴樹」(trie)中的含義是什麼?您對數據執行的操作的效果如何與相關模型相對應? – jfs

回答

3

是的,sqlite是實現字典的合理選擇。爲了提高速度,請使用:memory:選項,並確保爲查找和查詢創建適當的索引。

對於大型的持久性數據庫,它也能很好地工作。爲了提高速度,請注意提交大型事務而不是每個密鑰。

SQLite的建議的和適當的用途作爲數據存儲覆蓋在他們的網站:http://www.sqlite.org/features.html

1

如果雷蒙德的Hettinger還建議SQLite的,那麼這可能是你最好的選擇。

但是本地Python解決方案將使用「pickle」文件。你會建立一個Python dict來保存數據,然後「pickle」該字典;之後你可以「解開」字典。如果您只需要搜索一個密鑰,那麼這可能是一個好方法。

對於Python 2.x,您可能需要使用cPickle模塊。對於Python 3.x,只有pickle,但我相信它是cPickle

http://docs.python.org/library/pickle.html

在如果你的數據集是真正的大,如此之大,SQLite是開始嗆就可以了,然後,而不是分裂它分成多個小的SQLite文件和管理它們的另一方面,它可能使感覺只是將所有東西都轉儲到一個真正的數據庫中,比如PostgreSQL。