Открытие соединения с дополнительной базой данных с указанием 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
?