mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-23 01:14:31 +02:00
Added vacuum to CLI and Python API
This commit is contained in:
parent
fd5829b27d
commit
231224ba1a
6 changed files with 40 additions and 0 deletions
|
|
@ -15,3 +15,10 @@ You can list the names of tables in a database using the ``table_names`` subcomm
|
|||
dogs
|
||||
cats
|
||||
chickens
|
||||
|
||||
Vacuum
|
||||
======
|
||||
|
||||
You can run VACUUM to optimize your database like so::
|
||||
|
||||
$ sqlite-utils vacuum mydb.db
|
||||
|
|
|
|||
|
|
@ -313,3 +313,12 @@ By default the index will be named ``idx_{table-name}_{columns}`` - if you want
|
|||
["is_good_dog", "age"],
|
||||
index_name="good_dogs_by_age"
|
||||
)
|
||||
|
||||
Vacuum
|
||||
======
|
||||
|
||||
You can optimize your database by running VACUUM against it like so:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
Database("my_database.py").vacuum()
|
||||
|
|
|
|||
|
|
@ -20,3 +20,14 @@ def table_names(path):
|
|||
db = sqlite_utils.Database(path)
|
||||
for name in db.table_names:
|
||||
print(name)
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.argument(
|
||||
"path",
|
||||
type=click.Path(exists=True, file_okay=True, dir_okay=False, allow_dash=False),
|
||||
required=True,
|
||||
)
|
||||
def vacuum(path):
|
||||
"""Run VACUUM against the database"""
|
||||
sqlite_utils.Database(path).vacuum()
|
||||
|
|
|
|||
|
|
@ -98,6 +98,9 @@ class Database:
|
|||
)
|
||||
)
|
||||
|
||||
def vacuum(self):
|
||||
self.conn.execute("VACUUM;")
|
||||
|
||||
|
||||
class Table:
|
||||
def __init__(self, db, name):
|
||||
|
|
|
|||
|
|
@ -21,3 +21,8 @@ def db_path(tmpdir):
|
|||
def test_table_names(db_path):
|
||||
result = CliRunner().invoke(cli.cli, ["table_names", db_path])
|
||||
assert "Gosh\nGosh2" == result.output.strip()
|
||||
|
||||
|
||||
def test_vacuum(db_path):
|
||||
result = CliRunner().invoke(cli.cli, ["vacuum", db_path])
|
||||
assert 0 == result.exit_code
|
||||
|
|
|
|||
|
|
@ -176,3 +176,8 @@ def test_create_view(fresh_db):
|
|||
fresh_db.create_view("bar", "select bar from data")
|
||||
rows = fresh_db.conn.execute("select * from bar").fetchall()
|
||||
assert [("bar",)] == rows
|
||||
|
||||
|
||||
def test_vacuum(fresh_db):
|
||||
fresh_db["data"].insert({"foo": "foo", "bar": "bar"})
|
||||
fresh_db.vacuum()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue