使用Python requests调用MindsDB查询端点报错,请求协助解决
解决MindsDB查询端点调用的TypeError问题
问题分析
你遇到的TypeError: 'NoneType' object is not subscriptable错误,核心原因是请求格式不匹配:MindsDB的/api/sql/query端点要求接收application/json格式的请求体,但你的代码用data参数发送的是表单编码(application/x-www-form-urlencoded)的数据,导致服务器无法正确解析请求,返回异常。
修正代码
把data参数替换为json参数,requests会自动处理JSON序列化并设置正确的请求头:
import requests url = 'http://localhost:47334/api/sql/query' # 使用json参数传递查询语句 resp = requests.post(url, json={"query":"SELECT * FROM mytable"}) # 打印响应内容确认结果 print(resp.json())
如果需要手动设置请求头,也可以这样写:
import requests import json url = 'http://localhost:47334/api/sql/query' headers = {'Content-Type': 'application/json'} payload = {"query":"SELECT * FROM mytable"} resp = requests.post(url, headers=headers, data=json.dumps(payload)) print(resp.json())
额外检查点
- 确保查询语句中的表
mytable存在,若表属于某个数据库,需要加上数据库前缀,比如SELECT * FROM your_database.mytable - 可以用
print(resp.status_code)查看响应状态码,200表示请求成功,4xx/5xx表示存在其他问题
内容的提问来源于stack exchange,提问作者kamran hassan
相关产品推荐
相关产品推荐

