我在我的python脚本(plotly dash应用程序)中使用python雪花连接器,今天该应用程序停止工作,而无需更改代码。我尝试了几件事来找出问题所在,甚至尝试从Snowflake documentation运行示例代码,但遇到了相同的错误:
代码:
cur = conn.cursor()
try:
cur.execute("SELECT col1, col2 FROM test_table ORDER BY col1")
for (col1, col2) in cur:
print('{0}, {1}'.format(col1, col2))
finally:
cur.close()
错误:
Traceback (most recent call last):
File "db_connection.py", line 48, in <module>
cur.execute("SELECT col1, col2 FROM test_table ORDER BY col1")
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/snowflake/connector/cursor.py", line 580, in execute
self._init_result_and_meta(data, _use_ijson)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/snowflake/connector/cursor.py", line 630, in _init_result_and_meta
self._result = ArrowResult(data, self, use_dict_result=self._use_dict_result)
File "arrow_result.pyx", line 42, in snowflake.connector.arrow_result.ArrowResult.__init__
File "arrow_result.pyx", line 156, in snowflake.connector.arrow_result.ArrowResult._reset
NameError: name 'EmptyPyArrowIterator' is not defined
连接已建立,我能够在数据库中创建表,但是似乎无法查询和迭代数据。
我在macOS Catalina 10.15.1
,snowflake-connector-python==2.1.0
,Python 3.7.0
上。
答案 0 :(得分:3)
您必须通过安装pyarrow模块
pip3 install pyarrow
雪花连接器的安装不会自动安装。
答案 1 :(得分:2)
简短版本:通过运行以下命令将雪花连接器python回滚到2.0.4版本:pipenv安装“ snowflake-connector-python〜= 2.0.4”
长版: 我检查了提交到github的连接器,然后看到它们正在添加ARROW支持。不确定为什么arrow_result.pyx无法包含EmptyPyArrowIterator,但是将它包装成一个尝试,因此它仍然可以执行。但是,当涉及到reset函数时,它找不到引用并引发异常。
答案 2 :(得分:1)
请使用Python连接器版本2.1.1
pip install雪花连接器-python == 2.1.1
OR
pip3安装雪花连接器-python == 2.1.1
答案 3 :(得分:0)
我相信您可能已经使用过 点安装雪花-用于安装雪花连接器
尝试一下, pip安装雪花连接器-python
答案 4 :(得分:0)
几个小时前,我在一次长期批处理工作中遇到了这个问题。有趣的是,同一项工作正常进行,直到突然之间它开始引发“ EmptyPyArrowIterator”异常并且不会重新启动。将snowflake-connector-python
降级为2.0.4
似乎已经解决了该问题。
答案 5 :(得分:0)
有关其他影响的更多详细信息,请参阅下面的发行文档。
要修复,我已在用户级别安装pyarrow
pip3 install pyarrow --user