使用pinotdb连接Apache Pinot时出现AttributeError如何解决?
问题
本地通过Docker运行Apache Pinot的步骤:
docker pull apachepinot/pinot:latest docker run -p 9000:9000 pinot:latest QuickStart -type batch
使用Python的pinotdb包连接查询时,遇到以下错误:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Input In [31], in <cell line: 1>() ----> 1 curs.execute(""" 2 SELECT * 3 FROM baseballStats 4 WHERE league IN (%(leagues)s) 5 """, {"leagues": ["AA", "NL"]}) 6 for row in curs: 7 print(row) File ~\Anaconda3\envs\pinotdb\lib\site-packages\pinotdb\db.py:56, in check_closed.<locals>.g(self, *args, **kwargs) 54 if self.closed: 55 raise exceptions.Error(f"{self.__class__.__name__} already closed") ---> 56 return f(self, *args, **kwargs) File ~\Anaconda3\envs\pinotdb\lib\site-packages\pinotdb\db.py:448, in Cursor.execute(self, operation, parameters) 441 @check_closed 442 def execute(self, operation, parameters=None): 443 query = self.finalize_query_payload(operation, parameters) 445 r = self.session.post( 446 self.url, 447 json=query, ---> 448 auth=(self.auth._username, self.auth._password)) 449 return self.normalize_query_response(query, r) AttributeError: 'NoneType' object has no attribute '_username'
使用的Python代码:
from pinotdb import connect conn = connect(host='localhost', port=8000, path='/query/sql', scheme='http') curs = conn.cursor() curs.execute(""" SELECT * FROM baseballStats WHERE league IN (%(leagues)s) """, {"leagues": ["AA", "NL"]}) for row in curs: print(row)
解决方法
- 修正端口配置:Docker映射的是9000端口,但代码里连接的是8000,Pinot默认SQL查询端口为9000,先把代码中的
port=8000改成port=9000。 - 处理认证逻辑bug:错误是因为
pinotdb在无认证场景下未正确处理auth为None的情况,有两种修复方式:- 显式传入
auth=None参数,强制跳过认证:conn = connect(host='localhost', port=9000, path='/query/sql', scheme='http', auth=None) - 传入空的认证对象:
from pinotdb import connect, Auth conn = connect(host='localhost', port=9000, path='/query/sql', scheme='http', auth=Auth('', ''))
- 显式传入
- 验证服务可用性:可以访问
http://localhost:9000/query/sql确认Pinot的SQL查询端点是否正常响应。
内容的提问来源于stack exchange,提问作者Minura Punchihewa
相关产品推荐
相关产品推荐

