Невозможно обновить поле JsonField в Postgres с помощью необработанных запросов в Django
Я пытаюсь запустить этот код после миграции.
cursor.execute(f'UPDATE abc_model SET "abc_temp" = \'{{"0" : "{abc}" }}\' WHERE abc_model."id" = {id}')
Я получаю эту ошибку при использовании дампа следующей версии:
-- Dumped from database version 9.5.25
-- Dumped by pg_dump version 9.5.25
django.db.utils.DataError: invalid input syntax for type json
LINE 1: ...abc_model SET "abc_temp" = '{"0" : "M...
^
DETAIL: Character with value 0x0a must be escaped.
CONTEXT: JSON data, line 1: ...cum current detected the deviation from baseline.
Он работает нормально при использовании дампа следующей версии:
-- Dumped from database version 12.10 (Ubuntu 12.10-1.pgdg18.04+1)
-- Dumped by pg_dump version 14.2 (Ubuntu 14.2-1.pgdg18.04+1)
Я не уверен, вызвана ли эта проблема только разницей в версии дампа базы данных или из-за кодировки или чего-то еще.
Попробовать
cursor.execute(f”””UPDATE abc_model SET abc_temp = '{{"0" : "{abc}" }}' WHERE abc_model.id = {id}”””)