在python中高效存储表的正确方法:低内存使用率和通过少量复杂索引进行快速搜索

2024-04-18 02:57:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在python中存储几个字符串表(每个表包含几百万条记录)。让标题为(“A”、“B”、“C”),并且(“A”、“B”)是数据主键。然后我需要以下操作才能快速进行:

  1. 添加新记录(需要O(1)复杂性)。你知道吗
  2. 查找/更新、删除具有(A=“spam”,B=“eggs”)的记录(需要O(1)复杂性)。你知道吗
  3. 查找具有(A=“spam”,C=“foo”)(需要O(k)复杂度,其中k是结果行数)的所有记录。你知道吗

我看到了一个基于每个索引的嵌套dicts结构的解决方案。它符合我的需要,但我认为,有一个更好的现有解决方案。你知道吗


Tags: 数据字符串标题foo记录spam解决方案结构
1条回答
网友
1楼 · 发布于 2024-04-18 02:57:21

如评论中所建议的,使用数据库。sqlite3很小,而且相当简单。它创建了一个存在于单个文件中的数据库,您可以与它进行交互。你知道吗

下面是一个改编自the API的示例

import sqlite3
# Connect to your database (or create it if it was not there)
db = sqlite3.connect('data.db')

# Create the table
conn = db.cursor()
conn.execute("""
CREATE TABLE my_table
A text,
B text,
C text
""")

# Add an entry to the db 
conn.execute("INSERT INTO my_table VALUES ('spam','eggs','foo')")

# Read all the entries under a condition
for row in conn.execute("SELECT * FROM my_table WHERE A='spam' AND C='foo'"):
    print(row)


#safely close the db connection
conn.close()

注:示例在python3中

相关问题 更多 >