mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-17 09:12:28 +00:00
This PR is part of the documentation revamp. Once the full set of PRs is merged, we’ll publish the combined site to staging for review before updating docs.lancedb.com. Ingestion, search and integration examples are incomplete or inconsistent across languages, and some guidance misstates SDK behavior. This brings the guides and their example sources together. It includes complete Python, TypeScript and Rust workflows, isolated provider and reranker examples, the Superlinked corrections, and guidance on retries that can duplicate writes. Stacked on #4491. Each MDX file has one PR owner. Rebase onto main after #4491 is squash-merged. Local assembly, Mint validation and link checks pass. Example code is unchanged from the previously validated package. Publication stays held through integration.
111 lines
4.5 KiB
Plaintext
111 lines
4.5 KiB
Plaintext
---
|
|
title: "Delete rows"
|
|
sidebarTitle: "Delete"
|
|
description: "Select and delete records, verify the remaining rows, and understand storage retention."
|
|
icon: trash
|
|
availability:
|
|
oss: available
|
|
enterprise: available
|
|
summary: >-
|
|
Delete rows through the SDKs in OSS and Enterprise. Storage reclamation follows compaction and retention policy.
|
|
---
|
|
|
|
import { RsExample as RsDeleteRows } from '/snippets/ingestion_delete.mdx';
|
|
import { TsDeleteRowsBody, TsDeleteRowsTail } from '/snippets/ingestion_examples.mdx';
|
|
import { PyDeleteRows } from '/snippets/ingestion_examples.mdx';
|
|
import { PyWriteWorkflow, TsWriteWorkflowBody, TsWriteWorkflowTail, RsWriteWorkflow } from '/snippets/ingestion_examples.mdx';
|
|
|
|
Deleting rows removes matching records from the current table contents. It
|
|
keeps the table and schema so you can continue reading and writing. To remove
|
|
the table itself, see [Drop a table](/ingestion/create-table#drop-a-table).
|
|
|
|
## Inspect the rows you intend to delete {#select-rows}
|
|
|
|
Use the same predicate for inspection and deletion. The example below creates
|
|
Alice, Bob and Charlie, prints Charlie's row, and deletes it by `id = 3`.
|
|
Inspection and deletion are separate operations; concurrent writes can change
|
|
which rows match between them.
|
|
|
|
## Delete matching records {#delete-rows}
|
|
|
|
Each program creates Alice, Bob and Charlie in a temporary local database,
|
|
deletes Charlie, and prints the remaining rows: **Alice and Bob**. The temporary
|
|
database is removed when the program finishes.
|
|
|
|
- **Python:** install `lancedb`, save the code as `delete_rows.py`, and run
|
|
`python delete_rows.py`.
|
|
- **TypeScript:** install `@lancedb/lancedb`, save the code as `delete_rows.mts`,
|
|
and run `node delete_rows.mts` with Node.js 22.18 or later.
|
|
- **Rust:** download the [Rust examples](/static/code/ingestion-feedback-rust.zip),
|
|
extract the project, and run `cargo run --locked --bin delete`.
|
|
|
|
<CodeGroup>
|
|
<CodeBlock filename="Python" language="python" icon="python">
|
|
{PyDeleteRows}
|
|
</CodeBlock>
|
|
<CodeBlock filename="TypeScript" language="typescript" icon="square-js">
|
|
{TsDeleteRowsBody}
|
|
{TsDeleteRowsTail}
|
|
</CodeBlock>
|
|
<CodeBlock filename="Rust" language="rust" icon="rust">
|
|
{RsDeleteRows}
|
|
</CodeBlock>
|
|
</CodeGroup>
|
|
|
|
Enterprise also supports [`DELETE`](/sql/dml/delete).
|
|
|
|
## Verify that the rows are absent {#verify}
|
|
|
|
Query the same predicate after deletion and check the remaining row count.
|
|
A reader still using an older snapshot may see the earlier contents; see
|
|
[Consistency](/tables/consistency).
|
|
|
|
Deleted rows are excluded from current query results, including indexed
|
|
searches. Deletion does not imply immediate physical erasure of every stored
|
|
copy of the data.
|
|
|
|
## Understand storage reclamation {#storage}
|
|
|
|
Compaction rewrites the live data layout; cleanup removes eligible retained
|
|
versions and files. Retained history can continue to reference data that no
|
|
longer appears in the latest table version.
|
|
|
|
In OSS, `optimize()` provides maintenance operations. In Enterprise, managed
|
|
maintenance and retention follow the service configuration. Choose retention
|
|
according to the history you need, rather than shortening it as part of a
|
|
routine delete example. See [Compaction](/maintenance/compaction) and
|
|
[Cleanup](/maintenance/cleanup) for the separate maintenance workflow.
|
|
|
|
## Complete write workflow {#complete-example}
|
|
|
|
<Accordion title="Complete examples: create, append, update, upsert and delete">
|
|
|
|
Each program creates a temporary local database, performs the five operations,
|
|
prints the result, and removes its temporary data when finished.
|
|
|
|
- **Python:** install `lancedb`, save the code as `ingestion.py`, and run
|
|
`python ingestion.py`.
|
|
- **TypeScript:** install `@lancedb/lancedb`, save the code as `ingestion.mts`,
|
|
and run `node ingestion.mts` with Node.js 22.18 or later.
|
|
- **Rust:** download the [complete Rust project](/static/code/ingestion-rust.zip),
|
|
extract it, and run `cargo run --locked`. It includes `src/main.rs`, the Cargo
|
|
manifest and a lockfile for the example's dependencies. The code is shown below.
|
|
|
|
<CodeGroup>
|
|
<CodeBlock filename="ingestion.py" language="python" icon="python">
|
|
{PyWriteWorkflow}
|
|
</CodeBlock>
|
|
<CodeBlock filename="ingestion.mts" language="typescript" icon="square-js">
|
|
{TsWriteWorkflowBody}
|
|
{TsWriteWorkflowTail}
|
|
</CodeBlock>
|
|
<CodeBlock filename="src/main.rs" language="rust" icon="rust">
|
|
{RsWriteWorkflow}
|
|
</CodeBlock>
|
|
</CodeGroup>
|
|
|
|
After the operations, Alice has 10 logins, Bobby has 21, and Charlie has 6.
|
|
Dana is selected for deletion and is absent from the final result.
|
|
|
|
</Accordion>
|