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
dataclass
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 theColumn
constructor
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 |