擅长:python、mysql、java
<p>正如user@SahapAsci在对该问题的评论中建议的那样,您应该为SQL查询使用参数(阅读<a href="http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries" rel="noreferrer">docs</a>),以避免SQL注入漏洞。在</p>
<p>我链接的文档甚至有一个很好的注释:</p>
<p><a href="https://i.stack.imgur.com/5i5Vo.png" rel="noreferrer"><img src="https://i.stack.imgur.com/5i5Vo.png" alt="enter image description here"/></a></p>
<p>但我怀疑@SahapAsci在他们的评论中建议的代码有一个小错误。用户建议此代码:</p>
<pre><code>cursor.execute(
'SELECT id FROM fqdn AS domain WHERE domain.fqdn IS %s',
(fqdn_str))
</code></pre>
<p>但是我认为您需要在参数元组中添加一个逗号,因为否则它将不是一个元组,而是一个字符串,它将被解释为iterable并且只使用第一个字符(然后抛出您提到的错误:<code>"TypeError: not all arguments converted during string formatting"</code>)。我所链接的文档甚至有一个注释,要对这个特定的案例小心。在</p>
<p>你也许应该让我们<code>=</code>而不是{<cd3>},但我不能完全肯定最后一部分。在</p>
<p>最后的代码应该是这样的:</p>
^{pr2}$