擅长:python、mysql、java
<p>游标签名将连接作为第一个参数。重写<code>__init__</code>的方式使它获得一个游标。Segfault紧随其后。你的类更像是一个包装器而不是一个游标。您也没有调用<code>__init__</code>基类,<code>self=parent_cursor</code>不执行任何操作。在</p>
<p>以您的示例为例,将光标子类化的正确方法如下:</p>
<pre><code>class dcursor(psycopg2.extensions.cursor):
def dictfetchall(self):
"Returns all rows from a cursor as a dict"
desc = self.description
return [
dict(zip([col[0] for col in desc], row))
for row in self.fetchall()
]
conn = psycopg2.connect("dbname=dbpgs user=openerp")
cur = conn.cursor(cursor_factory=dcursor)
cur.execute('select name_related from hr_employee;')
print cur.dictfetchall()
</code></pre>
<p>但也可以参考fog关于使用<code>DictCursor</code>的建议。在</p>