如何将 urlopen 用于动态查询字符串
how to use urlopen for dynamic query string
我正在使用 python 和 solr,通过 url 将数据从 solr 加载到 python 为:
connection = urlopen('http://localhost:8983/solr/data/select?indent=on&q=sender_name:*AX*%20AND%20message:*Avail%20Lmt&rows=211&start=0&wt=json')
如果我必须使用 function.How 在不同形式的查询参数中传递不同的参数,我们可以传递吗,因为这个查询是 solr
sender_name:*SDI* - message:*Take this* (rows = 213 start=0)
sender_name:*TRY* - message:*Look Up* (rows =300 start=0)
通常这将通过将所有参数保存在字典中然后使用 urllib.parse.urlencode()
将其转换为合适的 URL 来完成。例如:
import urllib
sender_name = '*AX*'
message = '*Avail Lmt'
parms = {'q' : f'sender_name:{sender_name} - message:{message}', 'rows' : 213, 'start' : 0}
url = 'http://localhost:8983/solr/data/select?indent=on&' + urllib.parse.urlencode(parms, quote_via=urllib.parse.quote, safe='*:')
print(url)
这会给你:
http://localhost:8983/solr/data/select?indent=on&q=sender_name:*AX*%20-%20message:*Avail%20Lmt&rows=213&start=0
urllib.parse.quote()
用于为 space 提供 %20
而不是 +
.
我正在使用 python 和 solr,通过 url 将数据从 solr 加载到 python 为:
connection = urlopen('http://localhost:8983/solr/data/select?indent=on&q=sender_name:*AX*%20AND%20message:*Avail%20Lmt&rows=211&start=0&wt=json')
如果我必须使用 function.How 在不同形式的查询参数中传递不同的参数,我们可以传递吗,因为这个查询是 solr
sender_name:*SDI* - message:*Take this* (rows = 213 start=0)
sender_name:*TRY* - message:*Look Up* (rows =300 start=0)
通常这将通过将所有参数保存在字典中然后使用 urllib.parse.urlencode()
将其转换为合适的 URL 来完成。例如:
import urllib
sender_name = '*AX*'
message = '*Avail Lmt'
parms = {'q' : f'sender_name:{sender_name} - message:{message}', 'rows' : 213, 'start' : 0}
url = 'http://localhost:8983/solr/data/select?indent=on&' + urllib.parse.urlencode(parms, quote_via=urllib.parse.quote, safe='*:')
print(url)
这会给你:
http://localhost:8983/solr/data/select?indent=on&q=sender_name:*AX*%20-%20message:*Avail%20Lmt&rows=213&start=0
urllib.parse.quote()
用于为 space 提供 %20
而不是 +
.