2010-03-04 154 views
0

1.我有一个数据列表和一个sqlite数据库充满了过去的数据以及每个数据的一些统计数据。我必须和他们一起做下面的操作。需要关于python sqlite的帮助?

  • 检查列表中的每个项目是否存在于数据库中。如果没有,则收集新项目的一些统计数据并将其添加到数据库。
  • 检查数据库中的每个项目是否在列表中。如果不从数据库中删除它。

我不能只是创建一个新的数据库,因为我有其他处理要做的新项目和缺少的项目。
总之,我必须用列表中的新数据更新数据库。
做什么是最好的方法?

2.我不得不在python线程中使用sqlite。所以我为每个DB读写操作都设置了一个锁。现在它减慢了数据库访问速度。
线程锁定操作的开销是多少?是否有任何其他方式来使用DB与多个线程?
有人可以帮助我吗?我正在使用python3.1。

+0

假设DB有文件及其属性列表。我不想找到所有文件的统计信息来只更新新文件 – asdfg 2010-03-04 10:54:06

回答

0
  1. 它并不需要检查什么,只是用INSERT或在第一种情况下忽略(只是确保你有相应的独特的字段,以便INSERT不会造成重复)和DELETE FROM TBL WHERE数据NOT IN('第一项目','第二项','第三项')。

  2. 正如在官方SQLite常见问题中所述,“线程是邪恶的,避免它们。”据我记得,总是有线程+ sqlite的问题。并不是说sqlite根本不用线程,只是不太依赖这个功能。您还可以使单线程与数据库一起工作并首先将所有查询传递给它,但这种方法的有效性在很大程度上取决于程序中的数据库使用风格。

+0

我想用插入或忽略,但我需要收集新项目的一些统计数据并添加到数据库。我应该提到它。我会更新这个问题。感谢名单 – asdfg 2010-03-04 10:50:31