<p>有趣的是,回溯错误消息没有显示导致错误的行。导致错误的行出现在调用<code>connection.cursor()</code>之前(回溯的目标行是问题的根源)。在</p>
<p>错误是由</p>
<pre><code>connection = pymysql.connect(host='b8con.no-ip.org', user='sal',
password='bigsal71', db='EarthQuake', charset='utf8mb4',
cursorclass="pymysql.cursors.DictCursor")
</code></pre>
<p>可以通过
<a href="https://github.com/PyMySQL/PyMySQL#example" rel="nofollow noreferrer">removing the double quotes from around the cursorclass</a>:</p>
^{pr2}$
<p>注意,<code>pymysql.cursors.DictCursor</code>是一个
当<code>"pymysql.cursors.DictCursor"</code>是字符串时初始化。如果<code>self.cursorclass</code>是
设置为<code>pymysql.cursors.DictCursor</code>(通过<code>cursorclass</code>参数),然后</p>
<pre><code>return self.cursorclass(self)
</code></pre>
<p>返回<code>DictCursor</code>类的实例。如果<code>self.cursorclass</code>是字符串<code>"pymysql.cursors.DictCursor"</code>,则调用该字符串将引发</p>
<pre><code>TypeError: 'str' object is not callable
</code></pre>
<p>因为字符串是不可调用的。在</p>
<hr/>
<p>同样,作为<a href="https://stackoverflow.com/questions/32107136/download-a-csv-file-then-upload-to-mysql-using-python/32107365#comment52108803_32107136">nightuser points out</a></p>
<pre><code>for line in csvfile():
</code></pre>
<p>应该是</p>
<pre><code>for line in csvfile:
</code></pre>
<p>(不带括号)因为<code>csvfile</code>本身就是iterable。在</p>