您可以使用sqlitedict,它为SQLite数据库提供键值接口。
SQLite限制页面说,取决于
page_size和,理论最大值为140 TB
max_page_count。但是,Python
3.5.2-2ubuntu0〜16.04.4(
sqlite32.6.0)的默认值为
page_size=1024和
max_page_count=1073741823。这提供了约1100
GB的最大数据库大小,可以满足您的要求。
您可以使用以下软件包:
from sqlitedict import SqliteDictmydict = SqliteDict('./my_db.sqlite', autocommit=True)mydict['some_key'] = any_picklable_objectprint(mydict['some_key'])for key, value in mydict.items(): print(key, value)print(len(mydict))mydict.close()更新资料
关于内存使用情况。SQLite不需要您的数据集即可放入RAM。默认情况下,它最多缓存
cache_size2MiB页(与上述相同的Python)。这是您可以用来检查数据的脚本。运行前:
pip install lipsum psutil matplotlib psrecord sqlitedict
sqlitedct.py
#!/usr/bin/env python3import osimport randomfrom contextlib import closingimport lipsumfrom sqlitedict import SqliteDictdef main(): with closing(SqliteDict('./my_db.sqlite', autocommit=True)) as d: for _ in range(100000): v = lipsum.generate_paragraphs(2)[0:random.randint(200, 1000)] d[os.urandom(10)] = vif __name__ == '__main__': main()像这样运行它
./sqlitedct.py & psrecord --plot=plot.png --interval=0.1$!。在我的情况下,它将生成此图表:
和数据库文件:
$ du -h my_db.sqlite 84M my_db.sqlite



