python - 如何检查 django sqlite3 数据库?
问题描述
我有一个使用 WAL 的 sqlite3 django 数据库。在操作中,通常存在三个文件:db.sqlite3, db.sqlite3-shm, db.sqlite3-wal
.
为了方便地备份数据库(当服务停止时),我想创建一个管理命令来检查 sqlite 数据库,以便将所有更改写入db.sqlite3
并删除其他两个文件。
虽然 sqlite3 有一个检查点 API,但我不知道如何从 django(或python 的 sqlite3 模块)访问它
解决方案
经过大量挖掘,您可以使用编译指示:
from django.core.management.base import BaseCommand
from django.db import connection
class Command(BaseCommand):
help = 'Checkpoint the database, updating <db>.sqlite3 and removing <db>.sqlite3-wal and <db>.sqlite3-shm files'
def add_arguments(self, parser):
parser.add_argument('-cm', '--checkpoint_mode', default='TRUNCATE',
choices=['PASSIVE', 'FULL', 'RESTART', 'TRUNCATE'],
help='Checkpoint mode - See sqlite3 documentation for options (default is TRUNCATE)')
def handle(self, *args, **options):
with connection.cursor() as cursor:
cursor.execute(f"PRAGMA wal_checkpoint({options['checkpoint_mode']});")
result = cursor.fetchone()
print(f'{result}')
推荐阅读
- pentaho - 如何从 localhost:port/pentaho 在 linux 上运行 Pentaho 控制台?
- vb.net - Visual Basic 时间同步
- hive - 无法删除配置单元表分区包含特殊字符等号(=)
- javascript - 安排 Web 表单和 Javascript
- arrays - 你可以预先分配一个随机大小的数组吗?
- mysql - 如何在 MYSQL 中编写类似“最短路径”的命令或至少是“查找路径”命令?
- php - 我无法显示数据库中的图像
- javascript - 在“让”中转换 C# DateTime?
- php - PDOStatement::bindParam 在第一次调用后不起作用
- java - 如何使用多个jar文件?