0

Python 2.5 を使用して Sqlite データベースにアクセスすると時間がかかりすぎますが、同じデータベースに別の方法 (Python 3.2 を含む) でアクセスすると、はるかに短くなります。どうしたの?(Python 2.5 が必要で、Python 3.2 に切り替えることができません)

4

2 に答える 2

4

言うまでもなく、古いバージョンのプログラムを使用すると、後で追加されたパフォーマンスの向上、バグ修正、および機能追加が得られません。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.0pip install mypackage2.5 (および 2.6 ユーザー) 用の新しいバージョンが自動的に取得されます。

問題がラッパーではなく、基礎となる Csqlite3ライブラリにある可能性もあります。pysqliteインストールしてソースからsqlite3ビルドすれば、それも解決できます。pysqlite

使用しているバージョンがわからない場合は、実行時に確認できます。これは、モジュールに人間が読み取れるversion属性 (および のversion_infoようなタプルがあるsysため、確認できるversion_info >= (2, 6)) と、同様sqlite_versionsqlite_version_info、基礎となる C ライブラリの場合です。 .

于 2013-02-14T20:31:24.210 に答える
1

abarnertの優れた答えに加えて、コミットする頻度を確認してください。SQLiteではコミットが遅く、延期すると一般的にパフォーマンスが向上します。私が行った他のいくつかのテスト中にこれに遭遇し、コミット数を減らすことによるパフォーマンスの違いは非常に大きいです。

于 2013-02-14T20:35:46.857 に答える