我正在尝试从Linux
框中远程访问InfluxDB。当我使用CURL命令时,我能够获取数据库详细信息-
curl http://xx.xxx.xx.xxx:8086/query --data-urlencode "q=SHOW DATABASES"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["ExampleDatabase"]]}]}]}
在使用Requests
Python尝试相同的操作时,我得到 404页面未找到
import requests
shorturl = 'http://xx.xxx.xx.xxx:8086/query --data-urlencode "q=SHOW DATABASES"'
r = requests.get(shorturl)
print (r.text)
是否需要传递任何内容才能使其在Python中工作。当我尝试在浏览器中访问URL- http://xx.xxx.xx.xxx:8086/query --data-urlencode“ q = SHOW DATABASES” 时,我收到了404消息。 Telnet从Linux箱到托管InfluxDB的箱都在工作。
Python v2.7.5。我尝试了互联网上给出的所有可能方式,但没有一个起作用。
请澄清
答案 0 :(得分:1)
-data-urlencode是curl选项,用于将POST参数传递到您的HTTP请求。
您应该对请求使用适当的方法来获得相同的行为。 --data-urlencode在python中无效
这可能有效:
import requests
shorturl = 'http://xx.xxx.xx.xxx:8086/query'
r = requests.post(shorturl, data={'q': 'SHOW DATABASES'})
答案 1 :(得分:1)
正如我在评论中说的那样,您正确的带有curl的--data-urlencode短网址不适用于python请求,请尝试此操作
payload = {'q': 'SHOW DATABASES'}
shorturl = 'http://xx.xxx.xx.xxx:8086/query'
r = requests.get(shorturl, params=payload)
print (r.text)
您可以根据要求在http://docs.python-requests.org/en/master/user/quickstart/
了解更多信息