sql
SQLDataclass
Bases: DataclassMixin
A dataclass backed by a SQL table using the sqlalchemy ORM.
Per-field settings can be passed into the metadata argument of each dataclasses.field. See SQLDataclassFieldSettings for the full list of settings.
All dataclass fields will correspond to SQL columns unless their metadata is marked with sql=False.
Each field may also contain a "column" entry in its metadata dict. This will provide optional keyword arguments to be passed to sqlalchemy's Column constructor.
Some types are invalid for SQL columns; if such a type occurs, a TypeError will be raised.
Source code in fancy_dataclass/sql.py
get_columns()
classmethod
Gets a mapping from the class's field names to sqlalchemy Column objects.
Returns:
| Type | Description |
|---|---|
Dict[str, Column[Any]]
|
Dict from column names to |
Source code in fancy_dataclass/sql.py
SQLDataclassFieldSettings
Bases: FieldSettings
Settings for SQLDataclass fields.
Each field may define a metadata dict containing any of the following entries:
sql: ifTrue, include this field as a table column (defaultTrue)column: dict of keyword arguments passed to theColumnconstructor
Source code in fancy_dataclass/sql.py
get_column_type(tp)
Converts from a Python type to a corresponding sqlalchemy column type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tp |
type
|
A Python type |
required |
Returns:
| Type | Description |
|---|---|
type
|
Corresponding sqlalchemy column type |
Source code in fancy_dataclass/sql.py
register(reg=DEFAULT_REGISTRY, extra_cols=None)
Decorator that registers a sqlalchemy table for a SQLDataclass.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
reg |
Reg
|
sqlalchemy registry for mapping the class to a SQL table |
DEFAULT_REGISTRY
|
extra_cols |
Optional[Dict[str, Column[Any]]]
|
Additional columns (beyond the dataclass fields) to be stored in the table |
None
|
Returns:
| Type | Description |
|---|---|
Callable[[Type[SQLDataclass]], Type[SQLDataclass]]
|
A decorator mapping a |