allow passing api key as env var (#841)

Allow passing API key as env var:
```shell
export LANCEDB_API_KEY=sh_123...
```

with this set, apiKey argument can omitted from `connect`
```js
    const db = await vectordb.connect({
        uri: "db://test-proj-01-ae8343",
        region: "us-east-1",
  })
```
```py
    db = lancedb.connect(
        uri="db://test-proj-01-ae8343",
        region="us-east-1",
    )
```
This commit is contained in:
Bert
2024-01-22 16:18:28 -05:00
committed by Weston Pace
parent d8befeeea2
commit a409000c6f
3 changed files with 15 additions and 2 deletions

View File

@@ -12,6 +12,7 @@
# limitations under the License.
import importlib.metadata
import os
from typing import Optional
__version__ = importlib.metadata.version("lancedb")
@@ -38,6 +39,7 @@ def connect(
api_key: str, optional
If presented, connect to LanceDB cloud.
Otherwise, connect to a database on file system or cloud storage.
Can be set via environment variable `LANCEDB_API_KEY`.
region: str, default "us-east-1"
The region to use for LanceDB Cloud.
host_override: str, optional
@@ -65,6 +67,8 @@ def connect(
A connection to a LanceDB database.
"""
if isinstance(uri, str) and uri.startswith("db://"):
if api_key is None:
api_key = os.environ.get("LANCEDB_API_KEY")
if api_key is None:
raise ValueError(f"api_key is required to connected LanceDB cloud: {uri}")
return RemoteDBConnection(uri, api_key, region, host_override)