SQLite3 | Json | Кириллица
Случилась беда с кодировкой в БД (я полагаю).
Через ORM SQLAlchemy я заношу в бд следующие свойства:
for recipe in elem['data']:
name = recipe['name']
ingredients = json.dumps(recipe['ingredients'], ensure_ascii=False)
time = recipe['time']
_recipe = Recipe(name, ingredients, time, kind)
_ext.add_recipe(_recipe)
И на данном этапе в откладке с JSON-ом в ingredients все хорошо.
Теперь выполним следующие действия:
sqlite> select json_extract(ingredients, '$.cell') from recipes WHERE id=1;
sqlite> select ingredients from recipes WHERE id=1;
"[{\"name\": \"\u0412\u043e\u0434\u0430\", \"amount\": \"1 \u043b\"}, {\"name\": \"\u0421\u0430\u0445\u0430\u0440\", \"amount\": \"90 \u0433\"}, {\"name\": \"\u0421\u043e\u043b\u044c\", \"amount\": \"12 \u0433\"}, {\"name\": \"\u0423\u043a\u0441\u0443\u0441 9%-\u043d\u044b\u0439\", \"amount\": \"250 \u043c\u043b\"}, {\"name\": \"\u0411\u0435\u043b\u043e\u043a\u043e\u0447\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u043f\u0443\u0441\u0442\u0430\", \"amount\": \"1 \u0448\u0442\u0443\u043a\u0430\"}, {\"name\": \"\u0421\u0432\u0435\u043a\u043b\u0430\", \"amount\": \"1 \u0448\u0442\u0443\u043a\u0430\"}, {\"name\": \"\u041c\u043e\u0440\u043a\u043e\u0432\u044c\", \"amount\": \"1 \u0448\u0442\u0443\u043a\u0430\"}, {\"name\": \"\u041f\u0435\u0440\u0435\u0446 \u0447\u0438\u043b\u0438\", \"amount\": \"1 \u0448\u0442\u0443\u043a\u0430\"}, {\"name\": \"\u0427\u0435\u0441\u043d\u043e\u043a\", \"amount\": \"1 \u0433\u043e\u043b\u043e\u0432\u043a\u0430\"}, {\"name\": \"\u0427\u0435\u0440\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0446 \u0433\u043e\u0440\u043e\u0448\u043a\u043e\u043c\", \"amount\": \"10 \u0448\u0442\u0443\u043a\"}]"
sqlite>
То-есть я пытаюсь выполнить json_extract с JSON-ом в таблице, но возвращается пустая строка.
Также (не разбираюсь особо в кодировках) не очень понятно почему такой страшный вывод. Первая мысль которая приходит в голову - в консоле по-идее CP-1251.
Конкретизирую 2 вопроса:
- Как выполнить
json_extract? - Почему такие беды с выводом?