class JSON(sqltypes.JSON):
MSSQL JSON type.
MSSQL supports JSON-formatted data as of SQL Server 2016.
The _mssql.JSON
datatype at the DDL level will represent the
datatype as NVARCHAR(max), but provides for JSON-level comparison
functions as well as Python coercion behavior.
_mssql.JSON
is used automatically whenever the base
_types.JSON
datatype is used against a SQL Server backend.
See Also
_types.JSON
- main documentation for the generic
cross-platform JSON datatype.
The _mssql.JSON
type supports persistence of JSON values
as well as the core index operations provided by _types.JSON
datatype, by adapting the operations to render the JSON_VALUE
or JSON_QUERY functions at the database level.
The SQL Server _mssql.JSON
type necessarily makes use of the
JSON_QUERY and JSON_VALUE functions when querying for elements
of a JSON object. These two functions have a major restriction in that
they are mutually exclusive based on the type of object to be returned.
The JSON_QUERY function only returns a JSON dictionary or list,
but not an individual string, numeric, or boolean element; the
JSON_VALUE function only returns an individual string, numeric,
or boolean element. both functions either return NULL or raise
an error if they are not used against the correct expected value.
To handle this awkward requirement, indexed access rules are as follows:
When extracting a sub element from a JSON that is itself a JSON
dictionary or list, the _types.JSON.Comparator.as_json
accessor
should be used:
stmt = select( data_table.c.data["some key"].as_json() ).where( data_table.c.data["some key"].as_json() == {"sub": "structure"} )
When extracting a sub element from a JSON that is a plain boolean,
string, integer, or float, use the appropriate method among
_types.JSON.Comparator.as_boolean
,
_types.JSON.Comparator.as_string
,
_types.JSON.Comparator.as_integer
,
_types.JSON.Comparator.as_float
:
stmt = select( data_table.c.data["some key"].as_string() ).where( data_table.c.data["some key"].as_string() == "some string" )
Inherited from JSON
:
Class | Comparator |
Define comparison operations for _types.JSON . |
Class | JSONElementType |
Common function for index / path elements in a JSON expression. |
Class | JSONIndexType |
Placeholder for the datatype of a JSON index value. |
Class | JSONIntIndexType |
Placeholder for the datatype of a JSON index value. |
Class | JSONPathType |
Placeholder type for JSON path operations. |
Class | JSONStrIndexType |
Placeholder for the datatype of a JSON index value. |
Method | __init__ |
Construct a _types.JSON type. |
Method | bind_processor |
Return a conversion function for processing bind values. |
Method | result_processor |
Return a conversion function for processing result row values. |
Constant | NULL |
Describe the json value of NULL. |
Method | should_evaluate_none.setter |
Undocumented |
Class Variable | __visit_name__ |
Undocumented |
Class Variable | hashable |
Flag, if False, means values from this type aren't hashable. |
Instance Variable | none_as_null |
Undocumented |
Property | _str_impl |
Undocumented |
Property | python_type |
Return the Python type object expected to be returned by instances of this type, if known. |
Property | should_evaluate_none |
Alias of _types.JSON.none_as_null |
Inherited from TypeEngine
(via JSON
):
Method | adapt |
Produce an "adapted" form of this type, given an "impl" class to work with. |
Method | as_generic |
Return an instance of the generic type corresponding to this type using heuristic rule. The method may be overridden if this heuristic rule is not sufficient. |
Method | bind_expression |
Given a bind value (i.e. a .BindParameter instance), return a SQL expression in its place. |
Method | coerce_compared_value |
Suggest a type for a 'coerced' Python value in an expression. |
Method | column_expression |
Given a SELECT column expression, return a wrapping SQL expression. |
Method | compare_against_backend |
Compare this type against the given backend type. |
Method | compare_values |
Compare two values for equality. |
Method | compile |
Produce a string-compiled form of this .TypeEngine . |
Method | dialect_impl |
Return a dialect-specific implementation for this .TypeEngine . |
Method | evaluates_none |
Return a copy of this type which has the .should_evaluate_none flag set to True. |
Method | get_dbapi_type |
Return the corresponding type object from the underlying DB-API, if any. |
Method | literal_processor |
Return a conversion function for processing literal values that are to be rendered directly without using binds. |
Method | with_variant |
Produce a new type object that will utilize the given type when applied to the dialect of the given name. |
Class Variable | sort_key_function |
A sorting function that can be passed as the key to sorted. |
Static Method | _to_instance |
Undocumented |
Method | __repr__ |
Undocumented |
Method | __str__ |
Undocumented |
Method | _cached_bind_processor |
Return a dialect-specific bind processor for this type. |
Method | _cached_custom_processor |
Undocumented |
Method | _cached_literal_processor |
Return a dialect-specific literal processor for this type. |
Method | _cached_result_processor |
Return a dialect-specific result processor for this type. |
Method | _compare_type_affinity |
Undocumented |
Method | _default_dialect |
Undocumented |
Method | _dialect_info |
Return a dialect-specific registry which caches a dialect-specific implementation, bind processing function, and one or more result processing functions. |
Method | _gen_dialect_impl |
Undocumented |
Method | _resolve_for_literal |
adjust this type given a literal Python value that will be stored in a bound parameter. |
Method | _unwrapped_dialect_impl |
Return the 'unwrapped' dialect impl for this type. |
Method | copy |
Undocumented |
Method | copy_value |
Undocumented |
Class Variable | _is_array |
Undocumented |
Class Variable | _is_table_value |
Undocumented |
Class Variable | _is_tuple_type |
Undocumented |
Class Variable | _is_type_decorator |
Undocumented |
Class Variable | _isnull |
Undocumented |
Class Variable | _sqla_type |
Undocumented |
Property | _generic_type_affinity |
Undocumented |
Property | _has_bind_expression |
memoized boolean, check if bind_expression is implemented. |
Property | _has_column_expression |
memoized boolean, check if column_expression is implemented. |
Property | _static_cache_key |
Undocumented |
Property | _type_affinity |
Return a rudimental 'affinity' value expressing the general class of type. |
Inherited from Traversible
(via JSON
, TypeEngine
):
Method | get_children |
Return immediate child .visitors.Traversible elements of this .visitors.Traversible . |
Method | __class_getitem__ |
Undocumented |