我想在python中执行此操作:
curl 'http://localhost:8983/solr/samos/select?rows=0&q=*:*&fq=time:\[2012-08-01T00:00:00Z%20TO%202013-10-01T00:00:00Z\]&fq=loc:\[15,-45%20TO%2030,-30\]'
所以我做了一本字典并尝试了这个请求:
webpage = 'http://localhost:8983/solr/samos/select'
query_args = {
'q' : '*:*', \
'fq' : ['time:[2012-08-01T00:00:00Z TO 2013-10-01T00:00:00Z]', \
'fq' : 'loc:[15,-45 TO 30,-30]', \
'rows' : '0' \
}
query = urllib.urlencode(query_args)
req = urllib2.Request(webpage, query)
res = urllib2.urlopen(req)
这里的问题是我的fq' key,因此只处理一个参数。解决这个问题的最简单方法是什么?
答案 0 :(得分:2)
urlencode
将接受产生2元组的序列。
将映射对象或 两元素元组序列转换为“百分比编码”字符串。 ...
e.g。
query_args = [
('q', '*:*'),
('fq', 'time:[2012-08-01T00:00:00Z TO 2013-10-01T00:00:00Z]'),
('fq', 'loc:[15,-45 TO 30,-30]'),
('rows', '0'),
]
演示:
>>> urllib.urlencode(query_args)
'q=%2A%3A%2A&fq=time%3A%5B2012-08-01T00%3A00%3A00Z+TO+2013-10-01T00%3A00%3A00Z%5D&fq=loc%3A%5B15%2C-45+TO+30%2C-30%5D&rows=0'
注意,如果由于某种原因查询参数的 order 很重要,那么这也是您想要使用的内容。