SQLAlchemy Backend Base Classes¶
BaseAlchemyBackend
¶
Bases: BaseSQLBackend
Backend class for backends that compile to SQLAlchemy expressions.
Attributes¶
db_identity: str
cached
property
¶
Return the identity of the database.
Multiple connections to the same
database will return the same value for db_identity
.
The default implementation assumes connection parameters uniquely specify the database.
Returns:
Type | Description |
---|---|
Hashable
|
Database identity |
tables
cached
property
¶
An accessor for tables in the database.
Tables may be accessed by name using either index or attribute access:
Examples:
>>> con = ibis.sqlite.connect("example.db")
>>> people = con.tables['people'] # access via index
>>> people = con.tables.people # access via attribute
Functions¶
add_operation(operation)
¶
Add a translation function to the backend for a specific operation.
Operations are defined in ibis.expr.operations
, and a translation
function receives the translator object and an expression as
parameters, and returns a value depending on the backend.
compile(expr, limit=None, params=None, timecontext=None)
¶
Compile an Ibis expression.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expr |
ir.Expr
|
Ibis expression |
required |
limit |
str | None
|
For expressions yielding result sets; retrieve at most this number of values/rows. Overrides any limit already set on the expression. |
None
|
params |
Mapping[ir.Expr, Any] | None
|
Named unbound parameters |
None
|
timecontext |
tuple[pd.Timestamp, pd.Timestamp] | None
|
Additional information about data source time boundaries |
None
|
Returns:
Type | Description |
---|---|
Any
|
The output of compilation. The type of this value depends on the backend. |
connect(*args, **kwargs)
¶
Connect to the database.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
Mandatory connection parameters, see the docstring of |
()
|
|
**kwargs |
Extra connection parameters, see the docstring of |
{}
|
Notes¶
This creates a new backend instance with saved args
and kwargs
,
then calls reconnect
and finally returns the newly created and
connected backend instance.
Returns:
Type | Description |
---|---|
BaseBackend
|
An instance of the backend |
create_table(name, obj=None, *, schema=None, database=None, temp=False, overwrite=False)
¶
Create a table.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str
|
Name of the new table. |
required |
obj |
pd.DataFrame | pa.Table | ir.Table | None
|
An Ibis table expression or pandas table that will be used to
extract the schema and the data of the new table. If not provided,
|
None
|
schema |
sch.Schema | None
|
The schema for the new table. Only one of |
None
|
database |
str | None
|
Name of the database where the table will be created, if not the default. |
None
|
temp |
bool
|
Should the table be temporary for the session. |
False
|
overwrite |
bool
|
Clobber existing data |
False
|
Returns:
Type | Description |
---|---|
Table
|
The table that was created. |
database(name=None)
¶
Return a Database
object for the name
database.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str | None
|
Name of the database to return the object for. |
None
|
Returns:
Type | Description |
---|---|
Database
|
A database object for the specified database. |
drop_table(name, *, database=None, force=False)
¶
execute(expr, params=None, limit='default', **kwargs)
¶
Compile and execute an Ibis expression.
Compile and execute Ibis expression using this backend client interface, returning results in-memory in the appropriate object type
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expr |
ir.Expr
|
Ibis expression |
required |
limit |
str
|
For expressions yielding result sets; retrieve at most this number of values/rows. Overrides any limit already set on the expression. |
'default'
|
params |
Mapping[ir.Scalar, Any] | None
|
Named unbound parameters |
None
|
kwargs |
Any
|
Backend specific arguments. For example, the clickhouse backend
uses this to receive |
{}
|
Returns:
Type | Description |
---|---|
DataFrame | Series | Scalar
|
|
explain(expr, params=None)
¶
Explain an expression.
Return the query plan associated with the indicated expression or SQL query.
Returns:
Type | Description |
---|---|
str
|
Query plan |
insert(table_name, obj, database=None, overwrite=False)
¶
Insert data into a table.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
table_name |
str
|
The name of the table to which data needs will be inserted |
required |
obj |
pd.DataFrame | ir.Table | list | dict
|
The source data or expression to insert |
required |
database |
str | None
|
Name of the attached database that the table is located in. |
None
|
overwrite |
bool
|
If |
False
|
Raises:
Type | Description |
---|---|
NotImplementedError
|
If inserting data from a different database |
ValueError
|
If the type of |
list_databases(like=None)
¶
List databases in the current server.
raw_sql(query)
¶
Execute a query string.
The returned cursor object must be manually released.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
query |
DDL or DML statement |
required |
read_csv(path, table_name=None, **kwargs)
¶
Register a CSV file as a table in the current backend.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
str | Path
|
The data source. A string or Path to the CSV file. |
required |
table_name |
str | None
|
An optional name to use for the created table. This defaults to a sequentially generated name. |
None
|
**kwargs |
Any
|
Additional keyword arguments passed to the backend loading function. |
{}
|
Returns:
Type | Description |
---|---|
ir.Table
|
The just-registered table |
read_parquet(path, table_name=None, **kwargs)
¶
Register a parquet file as a table in the current backend.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
str | Path
|
The data source. |
required |
table_name |
str | None
|
An optional name to use for the created table. This defaults to a sequentially generated name. |
None
|
**kwargs |
Any
|
Additional keyword arguments passed to the backend loading function. |
{}
|
Returns:
Type | Description |
---|---|
ir.Table
|
The just-registered table |
register_options()
classmethod
¶
Register custom backend options.
schema(name)
¶
sql(query, schema=None, dialect=None)
¶
Convert a SQL query to an Ibis table expression.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
query |
str
|
SQL string |
required |
schema |
sch.Schema | None
|
The expected schema for this query. If not provided, will be inferred automatically if possible. |
None
|
dialect |
str | None
|
Optional string indicating the dialect of |
None
|
Returns:
Type | Description |
---|---|
Table
|
Table expression |
table(name, database=None, schema=None)
¶
Create a table expression from a table in the database.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name |
str
|
Table name |
required |
database |
str | None
|
The database the table resides in |
None
|
schema |
str | None
|
The schema inside
The |
None
|
Returns:
Type | Description |
---|---|
Table
|
Table expression |
to_csv(expr, path, *, params=None, **kwargs)
¶
Write the results of executing the given expression to a CSV file.
This method is eager and will execute the associated expression immediately.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expr |
ir.Table
|
The ibis expression to execute and persist to CSV. |
required |
path |
str | Path
|
The data source. A string or Path to the CSV file. |
required |
params |
Mapping[ir.Scalar, Any] | None
|
Mapping of scalar parameter expressions to value. |
None
|
kwargs |
Any
|
Additional keyword arguments passed to pyarrow.csv.CSVWriter |
{}
|
to_delta(expr, path, *, params=None, **kwargs)
¶
Write the results of executing the given expression to a Delta Lake table.
This method is eager and will execute the associated expression immediately.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expr |
ir.Table
|
The ibis expression to execute and persist to Delta Lake table. |
required |
path |
str | Path
|
The data source. A string or Path to the Delta Lake table. |
required |
params |
Mapping[ir.Scalar, Any] | None
|
Mapping of scalar parameter expressions to value. |
None
|
kwargs |
Any
|
Additional keyword arguments passed to deltalake.writer.write_deltalake method |
{}
|
to_parquet(expr, path, *, params=None, **kwargs)
¶
Write the results of executing the given expression to a parquet file.
This method is eager and will execute the associated expression immediately.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expr |
ir.Table
|
The ibis expression to execute and persist to parquet. |
required |
path |
str | Path
|
The data source. A string or Path to the parquet file. |
required |
params |
Mapping[ir.Scalar, Any] | None
|
Mapping of scalar parameter expressions to value. |
None
|
**kwargs |
Any
|
Additional keyword arguments passed to pyarrow.parquet.ParquetWriter |
{}
|
to_pyarrow(expr, *, params=None, limit=None, **kwargs)
¶
Execute expression and return results in as a pyarrow table.
This method is eager and will execute the associated expression immediately.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expr |
ir.Expr
|
Ibis expression to export to pyarrow |
required |
params |
Mapping[ir.Scalar, Any] | None
|
Mapping of scalar parameter expressions to value. |
None
|
limit |
int | str | None
|
An integer to effect a specific row limit. A value of |
None
|
kwargs |
Any
|
Keyword arguments |
{}
|
Returns:
Type | Description |
---|---|
Table
|
A pyarrow table holding the results of the executed expression. |
to_pyarrow_batches(expr, *, params=None, limit=None, chunk_size=1000000, **_)
¶
Execute expression and return an iterator of pyarrow record batches.
This method is eager and will execute the associated expression immediately.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expr |
ir.Expr
|
Ibis expression to export to pyarrow |
required |
limit |
int | str | None
|
An integer to effect a specific row limit. A value of |
None
|
params |
Mapping[ir.Scalar, Any] | None
|
Mapping of scalar parameter expressions to value. |
None
|
chunk_size |
int
|
Maximum number of rows in each returned record batch. |
1000000
|
Returns:
Type | Description |
---|---|
RecordBatchReader
|
Collection of pyarrow |
to_torch(expr, *, params=None, limit=None, **kwargs)
¶
Execute an expression and return results as a dictionary of torch tensors.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
expr |
ir.Expr
|
Ibis expression to execute. |
required |
params |
Mapping[ir.Scalar, Any] | None
|
Parameters to substitute into the expression. |
None
|
limit |
int | str | None
|
An integer to effect a specific row limit. A value of |
None
|
kwargs |
Any
|
Keyword arguments passed into the backend's |
{}
|
Returns:
Type | Description |
---|---|
dict[str, torch.Tensor]
|
A dictionary of torch tensors, keyed by column name. |