擅长:python、mysql、java
<p>已解决:</p>
<p>我明白我做错了什么。我需要做的唯一更改是在变量1后添加逗号,因为:
“对于位置变量绑定,第二个参数必须始终是序列,即使它包含单个变量。还要记住,Python需要一个逗号来创建一个单元素元组”。</p>
<p>例如:</p>
<pre><code>def delete(var_1):
cur.execute(
"""DELETE FROM potluck
WHERE name = %s;""", (var_1,))
</code></pre>
<p>这很管用。我得到的信息来自:</p>
<p><a href="http://initd.org/psycopg/docs/usage.html#sql-injection" rel="nofollow">http://initd.org/psycopg/docs/usage.html#sql-injection</a></p>
<p>在第二种情况下,请参考下面使用AsIs的另一个答案。那很有效。例如:</p>
<pre><code>def delete(name, var_1):
cur.execute(
"""DELETE FROM potluck
WHERE %s = %s;""", (AsIs(name), var_1))
</code></pre>
<p>这就是诀窍。谢谢!</p>