MCPcopy
hub / github.com/django/django / resolve_expression_parameter

Method resolve_expression_parameter

django/db/models/fields/json.py:404–428  ·  view source on GitHub ↗
(self, compiler, connection, sql, param)

Source from the content-addressed store, hash-verified

402
403class JSONIn(ProcessJSONLHSMixin, lookups.In):
404 def resolve_expression_parameter(self, compiler, connection, sql, param):
405 sql, params = super().resolve_expression_parameter(
406 compiler,
407 connection,
408 sql,
409 param,
410 )
411 if not connection.features.has_native_json_field and (
412 not hasattr(param, "as_sql") or isinstance(param, expressions.Value)
413 ):
414 if connection.vendor == "oracle":
415 value = param.value if hasattr(param, "value") else json.loads(param)
416 sql = "%s(JSON_OBJECT('value' VALUE %%s FORMAT JSON), '$.value')"
417 if isinstance(value, (list, dict)):
418 sql %= "JSON_QUERY"
419 else:
420 sql %= "JSON_VALUE"
421 elif connection.vendor == "mysql" or (
422 connection.vendor == "sqlite"
423 and params[0] not in connection.ops.jsonfield_datatype_values
424 ):
425 sql = "JSON_EXTRACT(%s, '$')"
426 if connection.vendor == "mysql" and connection.mysql_is_mariadb:
427 sql = "JSON_UNQUOTE(%s)" % sql
428 return sql, params
429
430 def process_lhs(self, compiler, connection):
431 sql, params = super().process_lhs(compiler, connection)

Callers

nothing calls this directly

Calls 1

loadsMethod · 0.45

Tested by

no test coverage detected