Skip to content

Instantly share code, notes, and snippets.

@lvsmart
Last active May 11, 2017 08:33
Show Gist options
  • Select an option

  • Save lvsmart/967cc391817f48fcb71be50fc4b42ad7 to your computer and use it in GitHub Desktop.

Select an option

Save lvsmart/967cc391817f48fcb71be50fc4b42ad7 to your computer and use it in GitHub Desktop.

Revisions

  1. lvsmart revised this gist May 11, 2017. 1 changed file with 6 additions and 6 deletions.
    12 changes: 6 additions & 6 deletions mysql_json_search.py
    Original file line number Diff line number Diff line change
    @@ -1,16 +1,16 @@
    def condition_sql(path, search_params):
    from_connection = []
    from_condition = []
    if not search_params:
    return ''
    if type(search_params) == list:
    for i in search_params:
    from_connection.append('JSON_CONTAINS(param_json, \'%s\', "%s")' % (json.dumps(i), path))
    from_condition.append('JSON_CONTAINS(param_json, \'%s\', "%s")' % (json.dumps(i), path))
    elif type(search_params) == dict:
    for k, v in search_params.items():
    if v:
    from_connection.append(condition_sql('%s.%s' % (path, k), v))
    from_condition.append(condition_sql('%s.%s' % (path, k), v))
    elif type(search_params) == str:
    from_connection.append('JSON_EXTRACT(param_json, "%s") = "%s"' % (path, search_params))
    from_condition.append('JSON_EXTRACT(param_json, "%s") = "%s"' % (path, search_params))
    else:
    from_connection.append('JSON_EXTRACT(param_json, "%s") = %s' % (path, search_params))
    return ' AND '.join(from_connection)
    from_condition.append('JSON_EXTRACT(param_json, "%s") = %s' % (path, search_params))
    return ' AND '.join(from_condition)
  2. lvsmart revised this gist May 11, 2017. 1 changed file with 0 additions and 2 deletions.
    2 changes: 0 additions & 2 deletions mysql_json_search.py
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,3 @@


    def condition_sql(path, search_params):
    from_connection = []
    if not search_params:
  3. lvsmart created this gist May 11, 2017.
    18 changes: 18 additions & 0 deletions mysql_json_search.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@


    def condition_sql(path, search_params):
    from_connection = []
    if not search_params:
    return ''
    if type(search_params) == list:
    for i in search_params:
    from_connection.append('JSON_CONTAINS(param_json, \'%s\', "%s")' % (json.dumps(i), path))
    elif type(search_params) == dict:
    for k, v in search_params.items():
    if v:
    from_connection.append(condition_sql('%s.%s' % (path, k), v))
    elif type(search_params) == str:
    from_connection.append('JSON_EXTRACT(param_json, "%s") = "%s"' % (path, search_params))
    else:
    from_connection.append('JSON_EXTRACT(param_json, "%s") = %s' % (path, search_params))
    return ' AND '.join(from_connection)