當我使用Python 2.5訪問Sqlite數據庫時,它需要很長時間,但如果我通過其他方式(包括Python 3.2)訪問同一個數據庫,它將花費更短的時間。這是怎麼回事? (我需要Python 2.5並且無法切換到Python 3.2)Python 2.5上的Sqlite3速度太慢
回答
不用說,如果您使用舊版本的程序,您將無法獲得性能改進,錯誤修復和功能添加稍後添加。在許多方面,Python 2.5比2.7(或3.2)更慢,更緩慢,功能更強大,而且大多數情況下,唯一的解決方案是「停止使用2.5」,除非您想追蹤更改日誌和反向端口的具體改進它到了2.5代碼庫。
但是在這種情況下,它更容易,因爲sqlite3
是獨立於Python開發的(事實上,在2.5之前,它甚至沒有內置),因爲pysqlite
。下面是一些版本的歷史(所看到的新增文檔中爲2.6和2.7):
- 的Python 2.5:pysqlite 2.3.2
- 的Python 2.6:pysqlite 2.4.1
- 的Python 2.7:2.6 pysqlite。 0
最新版本是2.6.3。您可以使用任何常用方法(pip
,easy_install
,從網站下載並遵循說明,從網站下載Windows二進制安裝程序並運行它們等)來安裝它。
事實上,如果你正在構建與setuptools
/distribute
一個包,你可能只是能夠把一個要求爲>= 2.6.0
和pip install mypackage
將自動獲得2.5(和2.6的用戶)的新版本。
您的問題也可能與底層C sqlite3
庫不同,而不是pysqlite
包裝。如果你安裝了sqlite3
,然後從源碼生成pysqlite
,那麼你也可以解決這個問題。
如果你不能確定你的版本,你可以在運行時檢查,因爲該模塊具有人類可讀version
屬性(和version_info
元組就像一個在sys
,這樣你就可以檢查version_info >= (2, 6)
)並且對於底層C庫同樣爲sqlite_version
和sqlite_version_info
。
你的答案有很多的信息和建議,將有助於,謝謝! – 2013-02-14 21:01:53
除了abarnert的出色答案之外,還要看你多久做一次提交。在SQLite中進行組合的速度很慢,如果延遲,通常會帶來性能方面的好處。在我做了一些other testing期間,我自己也遇到過這種情況,並且減少提交次數的性能差異非常大。
這是非常好的建議,但如果這是他的問題,爲什麼Python 2.7/3.2(pysqlite 2.6.0)解決了它?自動提交每個插入的最新版本仍然很慢。 (爲了記錄,我同意他應該研究這個 - 任何關心sqlite性能並且不知道需要學習它的人。) – abarnert 2013-02-14 20:37:38
我不知道爲什麼版本會影響很多。當然,他說他需要2.5,所以他在2.5下運行的代碼和他在3.x中測試的代碼有可能在一個重要的方面有所不同,比如在他的2.5代碼中更頻繁地提交。 – TimothyAWiseman 2013-02-14 20:40:27
這是可能的 - 但請記住,他還測試了2.7,並且它也解決了這個問題。我認爲他的2.7代碼更像他的2.5代碼而不是他的3.2代碼 - 事實上,它可能僅僅是他的2.5代碼。 pysqlite在2.3.2(2006年7月2日)和2.6.0(2010年3月5日)之間的幾十個與性能相關的軟件包中的一個更有可能成爲問題。 – abarnert 2013-02-14 21:00:54
- 1. JSF 2.3文件上傳速度太慢
- 2. SQL連接速度太慢
- 3. CoreData搜索速度太慢
- 4. 插入MYSQl速度太慢
- 5. OpenGL紋理速度太慢?
- 6. libcurl下載速度太慢
- 7. CoreNLP運行速度太慢
- 8. 使用postgresql COUNT *的速度太慢
- 9. Iphone Sqlite3查詢太慢
- 10. 爲什麼我的Python腳本與Matlab相比速度太慢?
- 11. jQuery .text()速度太慢(回調可能?)
- 12. 立方處理速度太慢
- 13. 圖像加載速度太慢頭()
- 14. ListView滾動時速度太慢
- 15. MATLAB串口連接速度太慢
- 16. java - system.nanoTime()運行速度太慢
- 17. Mysql InnoDB插入速度太慢?
- 18. 下載時git克隆速度太慢
- 19. 實體框架查詢速度太慢
- 20. jQuery:$(document).ready()在IE中速度太慢
- 21. Grails標準運行速度太慢
- 22. 安裝npm後PhpStorm速度太慢
- 23. StretchBlt太慢了,反正速度更快?
- 24. MySQL查詢速度太慢或超時
- 25. 使用python socketIO-client包初始化socketIO速度太慢
- 26. os.walk/scandir網絡驅動器上的速度太慢
- 27. Hibernate在遠程數據庫上的速度太慢(Postgresql)
- 28. Struts上傳速度較慢
- 29. NG文件上傳打開文件速度太慢
- 30. 爲什麼gdb在Snow Leopard上啓動速度太慢
它可以是Python 2.6或2.7? – Gjordis 2013-02-14 19:33:51
你有在JOIN和WHERE子句中使用的字段的索引嗎? – bernie 2013-02-14 19:34:58
我試過Python 2.7,它的工作原理。不過我想知道其他解決方案。如果我分享我的代碼,我需要告訴切換到2.7。 Python 2.5帶有許多我公司使用的軟件。 – 2013-02-14 20:03:54