需要python sqlite的帮助吗?

需要python sqlite的帮助吗?,python,sqlite,multithreading,Python,Sqlite,Multithreading,1.我有一个数据列表和一个sqlite DB,其中填充了过去的数据以及每个数据的一些统计信息。我必须对它们进行以下操作 检查列表中的每个项目是否存在于数据库中。如果否,则收集新项目的一些统计信息并将其添加到数据库中 检查数据库中的每个项目是否在列表中。如果没有,则从数据库中删除它 我不能仅仅创建一个新的数据库,因为我对新项目和缺少的项目还有其他处理。 简而言之,我必须用列表中的新数据更新数据库。最好的方法是什么 2.我不得不将sqlite与python线程一起使用。因此,我为每个DB读写操作

1.我有一个数据列表和一个sqlite DB,其中填充了过去的数据以及每个数据的一些统计信息。我必须对它们进行以下操作

  • 检查列表中的每个项目是否存在于数据库中。如果否,则收集新项目的一些统计信息并将其添加到数据库中
  • 检查数据库中的每个项目是否在列表中。如果没有,则从数据库中删除它
我不能仅仅创建一个新的数据库,因为我对新项目和缺少的项目还有其他处理。
简而言之,我必须用列表中的新数据更新数据库。
最好的方法是什么

2.我不得不将sqlite与python线程一起使用。因此,我为每个DB读写操作设置了一个锁。现在它降低了数据库访问速度。
线程锁定操作的开销是多少?还有没有其他方法可以将DB与多个线程一起使用?
有人能帮我吗?我正在使用python3.1

  • 它不需要检查任何内容,只需在第一种情况下使用INSERT或IGNORE(只需确保您有相应的唯一字段,这样INSERT不会创建重复项),并在第二种情况下从tbl中删除数据,其中数据不在(‘第一项’、‘第二项’、‘第三项’)

  • 正如SQLite官方FAQ中所说,“线程是邪恶的。避免它们。”据我记忆所及,线程+SQLite总是存在问题。并不是说sqlite根本不使用线程,只是不要太依赖这个特性。您还可以使单线程处理数据库并首先将所有查询传递给它,但这种方法的有效性在很大程度上取决于程序中数据库的使用方式


  • 我曾想过使用insert或ignore,但我需要收集新项目的一些统计信息并添加到数据库中。我应该提一下。我会更新这个问题。ThanxAssume数据库包含文件及其属性的列表。我不想找到所有文件的统计信息,只更新新文件