IndexError:元组索引超出postgresql的范围



我一直在使用pgcrypto扩展模块的摘要函数对几个值进行编码。我最近发现,我试图编码的一些URL值包含'%,',它会抛出

IndexError:元组索引超出范围

我今天花了几个小时试图解决这个问题,但到目前为止,我还没有纠正代码中的这个错误。如何对包含特殊字符的URL进行编码?

这在pgAdmin4中有效,但在我的python脚本中无效

encode(digest('domainname.com/pub-cgi/retrieve.pl?doc=file%2F1999&zone_19=300%2A%20','sha256')

如何对包含特殊字符的URL进行编码?

在对Stack Overflow做了更多的研究后,我发现了一个多年前发布的解决方案。

解码URL 中的转义字符

这是我用来解决编码问题的代码:

# This section of code reformats a href with URL encoding
def unquote(url):
return re.compile('%([0-9a-fA-F]{2})',re.M).sub(lambda m: chr(int(m.group(1),16)), url)
# URL with encoding - https://www.somedomainname.com/pubs/retrieve.pl?doc=some%2Ddocument%2Dname.pdf
print (unquote('https://www.somedomainname.com/pubs/retrieve.pl?doc=some%2Ddocument%2Dname.pdf'))
# Output - https://www.somedomainname.com/pubs/retrieve.pl?doc=some-document-name.pdf

现在我已经重新格式化了这个URL,我可以使用pgcrypto扩展模块的摘要函数用SHA-256哈希进行编码。

encode(digest('https://www.somedomainname.com/pubs/retrieve.pl?doc=some-document-name.pdf','sha256')

特别注意:在对URL进行哈希处理之前,我会从URL中删除href协议,因为它可以防止重复,这是我关心的问题。

相关内容

  • 没有找到相关文章

最新更新