擅长:python、mysql、java
<p>不要使用字符串格式,您将自己暴露在SQL注入中。在</p>
<p>在第二个参数中,将参数作为<em>序列</em>传入:</p>
<pre><code>curs.execute(
"INSERT INTO temperatur (datum, uhrzeit, ort, messwert) "
"VALUES (CURRENT_DATE(), NOW(), %s, %s)",
(ort, messwert))
</code></pre>
<p>这里<code>(ord, messwert)</code>是作为<code>curs.execute()</code>的第二个参数传入的元组。SQL语句中不需要<code>;</code>。在</p>
<p>出现错误是因为您只将一个</em>值传递给<code>%</code>字符串格式,您使用的表达式是<code>"string value" % ort</code>,因为<code>messwert</code>是作为<code>curs.execute()</code>的第二个参数传入的。您必须使用<code>"string value" % (ord, messwert)</code>。但是,您应该避免完全使用字符串格式,因为这会使您容易受到SQL注入攻击,攻击者利用对插入到SQL字符串中的值没有正确的转义。在</p>