python将独特的项添加到一个巨大的表中

时间:2014-03-07 00:49:46

标签: python database sqlite mysql-python

我有一个非常大的项目列表(10M +),必须放在一个包含三列的项目中(Item_ID,Item_name,Item_count)

  • 表格中的项目必须是唯一的。
  • 我们正逐一添加这些项目。
  • 添加每个新项目时,我们需要检查:
    • 如果它在桌面上,则更新其计数+1,并检索其ID
    • 如果不在表格中,请将其插入表格中,为其指定一个ID并将其计数设置为1

我尝试过不同的数据库实现(MySQL和sqlite,python shelve和我自己的平面文件实现),但问题总是一样的:表上的行越多,需要的查找操作就越多(对于一个10,000行的表,至少需要10,000 * 10,000次查找以下10,000个项目。

对数据库建立索引可能听起来不错,但我的理解是索引是在插入大量数据后完成的,而不是每次插入都更新。

那么,我们怎么能按照描述的方式将如此大量的项目添加到表中呢?

1 个答案:

答案 0 :(得分:0)

您可以使用set()来检查该项目是否已在列表中 我假设你有一个列表列表(w = [[id,name,count],[id,name,count],..])

r=[e[1] for e in list]   <--- this will create a new list that only contains the names

if(len(set(r+item[1]))== len(set(r))){  <-if this is true then the item is on list
     list[list.index(item)][countIndex]+= 1  <-- count +1
     list[list.index(item)][idindex]   <-- to retrieve id
}else{
     list=list+[id,item-name,count] <-- this will add the item 
}

如果你的数据库上的列表相同,只需使用get查询并设置信息。

设置ID,您可以搜索最后一项ID并设置+1,如此

list=list+[list[len(list)][id]+1,item-name,count]