Открытие соединения с дополнительной базой данных с указанием cursor_factory

Я определил именованную базу данных в settings.py::DATABASES, названную db.

Я хочу открыть соединение с этой базой данных и получить NamedTupleCursor вместо курсора psycopg2 по умолчанию.

Моя наивная попытка заключалась в следующем:

from psycopg2.extras import NamedTupleCursor

db = connections["db"].connection
with db.cursor(cursor_factory=NamedTupleCursor) as cursor:
    ...

Но .connection остается None, пока я явно не подключусь к базе данных.

Я могу вручную подключиться к базе данных, затем получить доступ к базовому соединению, вот так:

db = connections["db"]
if not db.connection:
    db.connect()
connection = db.connection
with connection.cursor(cursor_factory=NamedTupleCursor) as cursor:
    ...

Но все это выглядит очень ситуативно и не по-дженгоевски. Кроме того, я не уверен, будет ли соединение когда-либо закрыто, потому что я не использовал менеджер контекста.

Существует ли приемлемый способ получить соединение с одним из ваших DATABASES, который позволит мне указать cursor_factory?

Вернуться на верх