title: psycopg2 OperationalError: cursor does not exist
body: <p>I'm trying to implement a server side cursor in order to "bypass" Django ORM weakness when it comes to fetch an huge amount of data from the database.
  But I don't understand how named cursor are supposed to be defined, since my current code seems not working properly. I define the cursor in this way:</p>
  
  <pre><code>id = 'cursor%s' % uuid4().hex
  connection = psycopg2.connect('my connection string here')
  cursor = connection.cursor(id, cursor_factory=psycopg2.extras.RealDictCursor)
  </code></pre>
  
  <p>The cursor seems to work in that it can be iterated and returns expected records as python dictionary, but when I try to close it (<code>cursor.close()</code>) I get the exception:</p>
  
  <pre><code>psycopg2 OperationalError: cursor *the generated cursor id* does not exist
  </code></pre>
  
  <p>WTF?! So what is the object I'm using to retrieve stuff from the database?
  Is psycopg2 using a fallback default (unnamed) cursor since the one I defined is not found in my database (and if so... my big question: it's mandatory to define a cursor at the db level before using psycopg2?) I'm a lot confused, can you help me?</p>