【问题标题】:sqlite vacuum with djangosqlite 真空与 django
【发布时间】:2012-07-09 03:00:54
【问题描述】:

在sqlite中插入和删除大量记录后,sqlite db文件的大小一直在增长,有没有办法使用django清理表?

  • 一些让 sqlite 自动清空的设置
  • 或手动编写自己的 django 命令来清理

更新:

我使用sqlite database browser 执行以下SQL:

vacuum [my table];
commit;

效果很好,我只是想用程序的方式来做

【问题讨论】:

    标签: python django sqlite vacuum


    【解决方案1】:

    您可以按如下方式执行原始 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

    【讨论】:

    • 非常感谢,虽然我认为 django 模型元数据中的一些设置,但问题得到了解决
    • 使用 Django 1.8.3 它需要transaction.commit()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2022-10-22
    相关资源
    最近更新 更多