データベースから大量のデータを取得する際に Django ORM の弱点を「バイパス」するために、サーバー側カーソルを実装しようとしています。しかし、現在のコードが正しく機能していないように見えるため、名前付きカーソルがどのように定義されるべきかわかりません。カーソルを次のように定義します。
id = 'cursor%s' % uuid4().hex
connection = psycopg2.connect('my connection string here')
cursor = connection.cursor(id, cursor_factory=psycopg2.extras.RealDictCursor)
カーソルは、反復可能で期待されるレコードを python 辞書として返すという点で機能しているようですが、閉じようとすると ( cursor.close()
) 例外が発生します。
psycopg2 OperationalError: cursor *the generated cursor id* does not exist
なんてこと?!では、データベースからデータを取得するために使用しているオブジェクトは何ですか? 私が定義したものがデータベースに見つからないため、psycopg2はフォールバックのデフォルト(名前なし)カーソルを使用していますか(もしそうなら...私の大きな質問:psycopg2を使用する前にdbレベルでカーソルを定義することは必須ですか?)とても混乱しています、私を助けてくれませんか?