2

多数のレコードを sqlite に挿入および削除した後、sqlite db ファイルのサイズが大きくなり続けます。django でテーブルをバキュームする方法はありますか?

  • sqlite の自動バキュームを可能にするいくつかの設定
  • または手動でバキュームする独自の django コマンドを記述します

更新しました:

sqlite データベース ブラウザを使用して、次の SQL を実行します。

vacuum [my table];
commit;

それはうまく機能します、私はそれをプログラムの方法でやりたいだけです

4

1 に答える 1

5

次のように生のSQLを実行できます。

from django.db import connection, transaction
cursor = connection.cursor()

# Data modifying operation - commit required
cursor.execute("vacuum my_table")
transaction.commit_unless_managed()

ただし、これは興味深いものでしたhttp://www.sqlite.org/lang_vacuum.html/pragma.html#pragma_auto_vacuum

vacumm を自動に設定できるかもしれませんが、フラグメンテーションが悪化する可能性があるようです。

cursor.execute("PRAGMA auto_vacuum=FULL")

http://www.sqlite.org/pragma.html#pragma_auto_vacuum

于 2012-07-09T03:17:12.343 に答える