psycopg2 ProgrammingError - 带连字符的参数

时间:2018-02-15 06:28:23

标签: python-3.x postgresql psycopg2

$h=1;

    foreach ($nbResult as $key => $brand) {
        echo "
        <tr class='result".$h."' style='display:none; border-bottom: 1px solid #2f2f2f; align-right'>
        <td style='padding: 5px 0px 5px 0px; color: #2f2f2f'>" . $brand['email'] . " </td>
        </tr>
        ";
$h++;
        }
        echo "
        <tr>
        <td>
        <span class='loadMore'>SHOW ALL</span>
        </td>
        </tr>

sql = 'select "productID" from "Barneys_Output" where "designerID" = %s' %self.id db = self.cursor.execute(sql) 类似self.id(总是有一个连字符)。假设已经建立了游标和连接。我收到此错误N-1f27va5。 psycopg2读连字符有什么问题吗?在这种情况下,解决方案是什么?

1 个答案:

答案 0 :(得分:2)

您的陈述将如下

select "productID" from "Barneys_Output" where "designerID" = N-1f27va

这不是有效的SQL语法。你不应该自己格式化字符串。 PyGreSQL最好为你做这件事:

sql = 'select "productID" from "Barneys_Output" where "designerID" = %s'
db = self.cursor.execute(sql, (self.id, ))

这将正确转义字符串。这应该产生类似

的东西
select "productID" from "Barneys_Output" where "designerID" = 'N-1f27va'

虽然这个例子非常简单,但你不应该自己掩盖你的参数,因为PyGreSQL正确处理特殊字符或其他数据类型,如datedatetime