Django default connections.cursor() не разбирает JSONB в DICT, несмотря на использование PSYCOPG3

Я перевожу старую кодовую базу с Django ~2 на Django 4.2.1. Вместе с этим переходом я обновил psycopg2 до psycopg (также известного как psycopg3), но этот переход привел к тому, что мой курсор стал некорректно получать строки из базы данных PostgreSQL.

Я получаю STR вместо DICT при выборе JSONB объектов в моей базе данных

Важно: Когда я использую psycopg.connect напрямую, все поведение возвращается к тому, что я ожидал. Это происходит только тогда, когда я использую стандартное соединение django. from django.db import connection

Здесь я получаю некоторые json-объекты и проверяю их тип.

with connection.cursor() as cursor:
    cursor.execute("select json_file from json_file") # These are of type jsonb
    for row in cursor.fetchall(): 
        type(row[1])

Обычно возвращается dict, но сейчас возвращается str

Вот моя переменная DATABASES в настройках:

'default': {'NAME': 'postgres',
  'USER': 'postgres',
  'PASSWORD': 'postgres',
  'HOST': 'db',
  'PORT': 5432,
  'CONN_MAX_AGE': None,
  'CONN_HEALTH_CHECKS': False,
  'ENGINE': 'django.db.backends.postgresql',
}

Здесь Django's Connection + Cursor

> connections['default'].connection
<psycopg.Connection [IDLE] (host=db database=postgres) at 0x...>

> connections['default'].connection.cursor()
<django.db.backends.postgresql.base.Cursor [no result] [IDLE] (host=db database=postgres) at 0x...>

Вот связь psycopg's + Xursor

> psycopg.connect("...")
<psycopg.Connection [IDLE] (host=db database=postgres) at 0x...>

> psycopg.connect("...").cursor()
<psycopg.Cursor [no result] [IDLE] (host=db database=postgres) at 0x...>
In [54]: django_connection.cursor_factory
Out[54]: django.db.backends.postgresql.base.Cursor

In [55]: psycopg_connection.cursor_factory
Out[55]: psycopg.Cursor
Вернуться на верх