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