擅长:python、mysql、java
<p>psycopg2是用C编写的,除非您知道自己在做什么,否则在调用/扩展模块时有可能导致SIGSEGV。所有常见的函数和方法都会仔细检查它们的参数,以避免出现破坏和安全问题,但在某些领域,正确操作的负担现在由客户端代码承担。您只需触及其中一个区域:扩展连接或游标类型。在</p>
<p>要正确地执行此操作,您需要在<code>__init__</code>方法中执行一些特定的工作,如下所示:</p>
<p><a href="https://github.com/psycopg/psycopg2/blob/master/lib/extras.py#L49" rel="nofollow">https://github.com/psycopg/psycopg2/blob/master/lib/extras.py#L49</a></p>
<p>具体地说,<code>cursor</code>(和<code>connection</code>)是新样式的类,需要使用<code>super()</code>和传递给{<cd1>}的完整参数列表初始化。至少:</p>
<pre><code>def __init__(self, *args, **kwargs):
super(DictCursorBase, self).__init__(*args, **kwargs)
</code></pre>
<p>我特别链接了这个例子,因为它已经完成了您需要的工作,例如,获取数据并使其可用为<code>dict</code>s。只需<code>import psycopg.extras.DictCursor</code>(使用类似于<code>dict</code>的行类)或{<cd9>}(为每一行使用一个实数<code>dict</code>)就完成了。在</p>