我有以下代码用于将数据从雪花数据库返回到熊猫数据帧。一切正常,直到我安装了其他一些软件包,现在我收到一个未知错误:
def getsnowflake(sql):
src_account = 'xxx'
src_region = 'xxx'
un_database = 'xxx'
un_warehouse = 'xxx'
un_user = 'xxx'
un_password = 'xxx'
un_role = 'xxx'
ctx_src = snowflake.connector.connect(user=un_user, password=un_password, account=src_account,
region=src_region, database=un_database, warehouse=un_warehouse, role=un_role)
csrc = ctx_src.cursor()
result = csrc.execute(sql).fetch_pandas_all()
return result
我很确定这与 pyarrow 版本不兼容有关。我检查了这个:
from snowflake import connector
import time
import logging
for logger_name in ['snowflake.connector', 'botocore', 'boto3']:
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
ch = logging.FileHandler('test.log')
ch.setLevel(logging.DEBUG)
ch.setFormatter(logging.Formatter('%(asctime)s - %(threadName)s %(filename)s:%(lineno)d - %(funcName)s() - %(levelname)s - %(message)s'))
logger.addHandler(ch)
from snowflake.connector.cursor import CAN_USE_ARROW_RESULT
import pyarrow
import pandas as pd
print('CAN_USE_ARROW_RESULT', CAN_USE_ARROW_RESULT)
哪个返回:
CAN_USE_ARROW_RESULT 错误
我使用的是 python 3.7.6。然后我使用 powershell 创建了一个虚拟环境:
python -m venv venv
然后我使用了网站上的这个需求文件:
https://github.com/snowflakedb/snowflake-connector-python/tree/master/tested_requirements
我使用了 requirements_37.req 并安装了它:
pip install -r requirements.txt
然后运行以下命令来安装连接器:
pip install snowflake-connector-python[pandas]==2.3.4
但是错误还是一样。我还检查过,如果我不将它放入数据框中,我确实可以从数据库中得到结果,所以“唯一”不起作用的是 '''.fetch_pandas_all()''' 位,但正如过去所说的那样工作。 任何指针将不胜感激