&gt;Rows are represented as standard Python dictionaries<p>That seems inefficient. You&#x27;re always going to have the same columns in each row, so storing column names for each row is a huge waste of memory. Django&#x27;s &quot;cursor.fetchall&quot; returns a list of tuples, which seems to be a saner way to represent db rows in Python.