[Python] Get table schema (#313)

This commit is contained in:
Lei Xu
2023-07-15 17:39:37 -07:00
committed by GitHub
parent 04c6814fb1
commit 028a6e433d
5 changed files with 35 additions and 448 deletions

View File

@@ -19,7 +19,8 @@ import pyarrow as pa
from lancedb.common import DATA
from lancedb.db import DBConnection
from lancedb.table import Table
from lancedb.schema import schema_to_json
from lancedb.table import Table, _sanitize_data
from .client import RestfulLanceDBClient
@@ -75,4 +76,23 @@ class RemoteDBConnection(DBConnection):
on_bad_vectors: str = "error",
fill_value: float = 0.0,
) -> Table:
raise NotImplementedError
if data is None and schema is None:
raise ValueError("Either data or schema must be provided.")
if data is not None:
data = _sanitize_data(
data, schema, on_bad_vectors=on_bad_vectors, fill_value=fill_value
)
else:
if schema is None:
raise ValueError("Either data or schema must be provided")
data = pa.Table.from_pylist([], schema=schema)
from .table import RemoteTable
payload = {
"name": name,
"schema": schema_to_json(data.schema),
"records": data.to_pydict(),
}
self._loop.run_until_complete(self._client.create_table("/table/", payload))
return RemoteTable(self, name)

View File

@@ -11,6 +11,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from functools import cached_property
from typing import Union
import pyarrow as pa
@@ -18,6 +19,7 @@ import pyarrow as pa
from lancedb.common import DATA, VEC, VECTOR_COLUMN_NAME
from ..query import LanceQueryBuilder, Query
from ..schema import json_to_schema
from ..table import Query, Table
from .db import RemoteDBConnection
@@ -30,8 +32,14 @@ class RemoteTable(Table):
def __repr__(self) -> str:
return f"RemoteTable({self._conn.db_name}.{self.name})"
@cached_property
def schema(self) -> pa.Schema:
raise NotImplementedError
"""Return the schema of the table."""
resp = self._conn._loop.run_until_complete(
self._conn._client.get(f"/table/{self._name}/describe")
)
schema = json_to_schema(resp["schema"])
raise schema
def to_arrow(self) -> pa.Table:
raise NotImplementedError