class documentation

class JSON(sqltypes.JSON):

View In Hierarchy

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:

  1. 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"}
    )
    
  2. 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"
    )
    
New in version 1.4.

Inherited from JSON:

Class ​Comparator Define comparison operations for _types.JSON.
Class ​JSONElement​Type Common function for index / path elements in a JSON expression.
Class ​JSONIndex​Type Placeholder for the datatype of a JSON index value.
Class ​JSONInt​Index​Type Placeholder for the datatype of a JSON index value.
Class ​JSONPath​Type Placeholder type for JSON path operations.
Class ​JSONStr​Index​Type 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