我刚开始使用PostgreSQL,有点问题。我正在使用Psycopg2并在awsrds上托管PostgreSQL数据库。下面是我要执行的查询:
cursor.execute('SELECT id FROM fqdn AS domain WHERE domain.fqdn IS {0}'.format(fqdn_str))
fqdn_str是这样一个域名:
^{pr2}$fqdn表如下:
CREATE TABLE fqdn (
id SERIAL PRIMARY KEY,
fqdn TEXT NOT NULL,
date_last_crawled TIMESTAMP WITH TIME ZONE NOT NULL,
UNIQUE (fqdn)
);
我得到的错误是:
psycopg2.ProgrammingError: syntax error at or near "https"
我不知道我做错了什么,所以我希望你能帮我一点忙。如果你需要更多的信息,请告诉我。非常感谢。在
编辑:
如果将格式字符串更改为%s(如文档中所示),则会出现以下错误:
TypeError: not all arguments converted during string formatting
在WHERE子句中更改是by=。在
^{pr2}$db<;>fiddlehere
正如user@SahapAsci在对该问题的评论中建议的那样,您应该为SQL查询使用参数(阅读docs),以避免SQL注入漏洞。在
我链接的文档甚至有一个很好的注释:
但我怀疑@SahapAsci在他们的评论中建议的代码有一个小错误。用户建议此代码:
但是我认为您需要在参数元组中添加一个逗号,因为否则它将不是一个元组,而是一个字符串,它将被解释为iterable并且只使用第一个字符(然后抛出您提到的错误:
"TypeError: not all arguments converted during string formatting"
)。我所链接的文档甚至有一个注释,要对这个特定的案例小心。在你也许应该让我们},但我不能完全肯定最后一部分。在
=
而不是{最后的代码应该是这样的:
^{pr2}$相关问题 更多 >
编程相关推荐