Раз уж всё равно по этой фигне не получится сделать нормальный поиск, то почему бы вместо экранирования спецсимволов не закодировать всё в base64 и записать в виде base64?
Тоесть при записи идёт цепочка object -> json-> base64 string -> поле в базе
А при чтении наоборот: поле в базе -> base64 string -> json -> object
Кстати вот это у тебя не валидный JSON:
report_days=' "Дата":"22.06.2022","Время":"17:05", "Головная боль":"Да" '
report_json=json.dumps(report_days, ensure_ascii=False).encode('utf8')
# в результате в report_json будет не json-объект, а json-строка, в которой всё содержимое report_days будет экранировано
Скорее всего тебе нужно что-то такое:
report_days = { # Тут у тебя вместо объекта строка, которая только отдалённо похожа на json
'Дата': '22.06.2022',
'Время': '17:05',
'Головная боль': 'Да'
}
report_json = json.dumps(report_days, ensure_ascii = False).encode('utf8')
report_json_base64 = base64.b64encode(bytes(report_json, 'utf-8'))
# INSERT
В каком виде вообще php это потребляет? Есть примеры записей, с которыми php работает?