Skip to content

Commit 5a1841f

Browse files
authored
Fix incorrect namespace snippets (#165)
1 parent ac15754 commit 5a1841f

4 files changed

Lines changed: 26 additions & 10 deletions

File tree

docs/namespaces.mdx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,24 @@ See the Python example below for how to use namespaces in practice.
5151
```python Python icon="python"
5252
import lancedb
5353

54-
# App config: only the catalog endpoint/root is configured once.
55-
db = lancedb.connect("s3://my-lakehouse/catalog")
54+
# Local namespace-backed catalog root (DirectoryNamespace)
55+
db = lancedb.connect_namespace("dir", {"root": "./namespace_test"})
5656

5757
# Business identifier + namespace path (stable app-level IDs)
5858
namespace = ["prod", "recommendations"]
5959
table_name = "user_profiles"
6060

61+
# Create namespace hierarchy sequentially
62+
for i in range(1, len(namespace) + 1):
63+
db.create_namespace(namespace[:i], mode="exist_ok")
64+
6165
# Good: resolve table through catalog + namespace
62-
table = db.open_table(table_name, namespace=namespace)
66+
table = db.create_table(
67+
table_name,
68+
data=[{"id": 1, "vector": [0.1, 0.2], "name": "alice"}],
69+
namespace=namespace,
70+
mode="overwrite",
71+
)
6372

6473
# Bad: Avoid hard-coded physical object-store table paths
6574
# (it's bad for maintainability reasons)

docs/snippets/connection.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ export const PyConnectObjectStorage = "import lancedb\n\nuri = \"s3://your-bucke
1212

1313
export const PyConnectObjectStorageAsync = "import lancedb\n\nuri = \"s3://your-bucket/path\"\n# You can also use \"gs://your-bucket/path\" or \"az://your-container/path\".\nasync_db = await lancedb.connect_async(uri)\n";
1414

15-
export const PyNamespaceAdminOps = "import lancedb\n\ndb = lancedb.connect(\"./data/sample-lancedb\")\ndb.create_namespace([\"prod\"])\ndb.create_namespace([\"prod\", \"search\"])\n\nchild_namespaces = db.list_namespaces(namespace=[\"prod\"]).namespaces\nmetadata = db.describe_namespace([\"prod\", \"search\"])\n\ndb.drop_namespace([\"prod\", \"search\"], mode=\"skip\")\ndb.drop_namespace([\"prod\"], mode=\"skip\")\n";
15+
export const PyNamespaceAdminOps = "import lancedb\n\ndb = lancedb.connect_namespace(\"dir\", {\"root\": \"./data/sample-lancedb\"})\nnamespace = [\"prod\", \"search\"]\n\nfor i in range(1, len(namespace) + 1):\n db.create_namespace(namespace[:i], mode=\"exist_ok\")\n\nchild_namespaces = db.list_namespaces(namespace=[\"prod\"]).namespaces\nmetadata = db.describe_namespace([\"prod\", \"search\"])\n\ndb.drop_namespace([\"prod\", \"search\"], mode=\"skip\")\ndb.drop_namespace([\"prod\"], mode=\"skip\")\n";
1616

17-
export const PyNamespaceTableOps = "import lancedb\n\ndb = lancedb.connect(\"./data/sample-lancedb\")\nnamespace = [\"prod\", \"search\"]\n\ndb.create_table(\n \"users\",\n data=[{\"id\": 1, \"name\": \"alice\"}],\n mode=\"overwrite\",\n namespace=namespace,\n)\n\ntable = db.open_table(\"users\", namespace=namespace)\ntables = db.list_tables(namespace=namespace).tables\n\ndb.drop_table(\"users\", namespace=namespace)\n# drop_all_tables is namespace-aware as well:\n# db.drop_all_tables(namespace=namespace)\n";
17+
export const PyNamespaceTableOps = "import lancedb\n\ndb = lancedb.connect_namespace(\"dir\", {\"root\": \"./data/sample-lancedb\"})\nnamespace = [\"prod\", \"search\"]\n\nfor i in range(1, len(namespace) + 1):\n db.create_namespace(namespace[:i], mode=\"exist_ok\")\n\ndb.create_table(\n \"users\",\n data=[{\"id\": 1, \"vector\": [0.1, 0.2], \"name\": \"alice\"}],\n mode=\"overwrite\",\n namespace=namespace,\n)\n\ntable = db.open_table(\"users\", namespace=namespace)\ntables = db.list_tables(namespace=namespace).tables\n\ndb.drop_table(\"users\", namespace=namespace)\n# drop_all_tables is namespace-aware as well:\n# db.drop_all_tables(namespace=namespace)\n";
1818

1919
export const TsConnect = "import * as lancedb from \"@lancedb/lancedb\";\n\nasync function connectExample(uri: string) {\n const db = await lancedb.connect(uri);\n return db;\n}\n";
2020

docs/tables/namespaces.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ the `data/` directory.
5555

5656
You can open/create/drop tables inside a namespace path (like `["prod", "search"]`).
5757
The Python and Rust SDKs expose namespace lifecycle operations directly.
58+
In Python, use `lancedb.connect_namespace(...)` when calling namespace lifecycle methods such as
59+
`create_namespace`, `list_namespaces`, `describe_namespace`, and `drop_namespace`.
5860

5961
<CodeGroup>
6062
<CodeBlock filename="Python" language="Python" icon="python">

tests/py/test_connection.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,15 @@ def namespace_table_ops_example():
5858
# --8<-- [start:namespace_table_ops]
5959
import lancedb
6060

61-
db = lancedb.connect("./data/sample-lancedb")
61+
db = lancedb.connect_namespace("dir", {"root": "./data/sample-lancedb"})
6262
namespace = ["prod", "search"]
6363

64+
for i in range(1, len(namespace) + 1):
65+
db.create_namespace(namespace[:i], mode="exist_ok")
66+
6467
db.create_table(
6568
"users",
66-
data=[{"id": 1, "name": "alice"}],
69+
data=[{"id": 1, "vector": [0.1, 0.2], "name": "alice"}],
6770
mode="overwrite",
6871
namespace=namespace,
6972
)
@@ -82,9 +85,11 @@ def namespace_admin_ops_example():
8285
# --8<-- [start:namespace_admin_ops]
8386
import lancedb
8487

85-
db = lancedb.connect("./data/sample-lancedb")
86-
db.create_namespace(["prod"])
87-
db.create_namespace(["prod", "search"])
88+
db = lancedb.connect_namespace("dir", {"root": "./data/sample-lancedb"})
89+
namespace = ["prod", "search"]
90+
91+
for i in range(1, len(namespace) + 1):
92+
db.create_namespace(namespace[:i], mode="exist_ok")
8893

8994
child_namespaces = db.list_namespaces(namespace=["prod"]).namespaces
9095
metadata = db.describe_namespace(["prod", "search"])

0 commit comments

Comments
 (0)