Python 2.5 を使用して Sqlite データベースにアクセスすると時間がかかりすぎますが、同じデータベースに別の方法 (Python 3.2 を含む) でアクセスすると、はるかに短くなります。どうしたの?(Python 2.5 が必要で、Python 3.2 に切り替えることができません)
2 に答える
言うまでもなく、古いバージョンのプログラムを使用すると、後で追加されたパフォーマンスの向上、バグ修正、および機能追加が得られません。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: pysqlite 2.6.0
最新バージョンは 2.6.3 です。通常の方法のいずれかを使用してインストールできます (、、pip
Webeasy_install
サイトからダウンロードして指示に従う、Web サイトから Windows バイナリ インストーラーをダウンロードして実行する、など)。
実際、setuptools
/distribute
を使用してパッケージをビルドしている場合、 の要件を設定するだけで>= 2.6.0
、pip install mypackage
2.5 (および 2.6 ユーザー) 用の新しいバージョンが自動的に取得されます。
問題がラッパーではなく、基礎となる Csqlite3
ライブラリにある可能性もあります。pysqlite
インストールしてソースからsqlite3
ビルドすれば、それも解決できます。pysqlite
使用しているバージョンがわからない場合は、実行時に確認できます。これは、モジュールに人間が読み取れるversion
属性 (および のversion_info
ようなタプルがあるsys
ため、確認できるversion_info >= (2, 6)
) と、同様sqlite_version
にsqlite_version_info
、基礎となる C ライブラリの場合です。 .
abarnertの優れた答えに加えて、コミットする頻度を確認してください。SQLiteではコミットが遅く、延期すると一般的にパフォーマンスが向上します。私が行った他のいくつかのテスト中にこれに遭遇し、コミット数を減らすことによるパフォーマンスの違いは非常に大きいです。