2010-03-04 144 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