使用SQLAlchemy连接Snowflake至Jupyter Notebook的警告问题咨询
解决Snowflake导入Jupyter Notebook时的pandas警告问题
你这段代码确实用到了SQLAlchemy,但警告的核心原因是:你传给pd.read_sql的con参数是底层的DBAPI连接(conn.connection),而非SQLAlchemy规范的可连接对象(engine或SQLAlchemy connection实例),所以pandas会触发该提示。
原代码问题点
在with engine.connect() as conn:代码块中,你调用了conn.connection,这是Snowflake原生的DBAPI连接对象,不属于pandas认可的SQLAlchemy connectable类型,因此触发警告。
两种解决方式
方式1:直接使用SQLAlchemy Engine作为连接
无需单独创建connection实例,直接将engine传给pd.read_sql的con参数即可:
import math as math import numpy as np; import pandas as pd; import matplotlib.pyplot as plt; import seaborn as sns; import snowflake from sqlalchemy import create_engine from snowflake.sqlalchemy import URL; url = URL(account = 'x' ,user = 'anthony.j@email.com' ,database = 'x' ,warehouse= 'x' ,password= 'xx' ,role = 'x'); HL_Aud_tseries= "select * from RAW.WORKSPACE__ANALYST.TSP_FILE_HL_AUD_CORR_TEST_JAJ;" engine = create_engine(url); # 直接传入engine作为连接参数 HL_AUD = pd.read_sql( sql=HL_Aud_tseries, con=engine )
方式2:使用SQLAlchemy Connection实例(而非底层DBAPI连接)
如果要保留with连接管理块,直接传入conn(SQLAlchemy的connection实例)即可,不要加.connection后缀:
import math as math import numpy as np; import pandas as pd; import matplotlib.pyplot as plt; import seaborn as sns; import snowflake from sqlalchemy import create_engine from snowflake.sqlalchemy import URL; url = URL(account = 'x' ,user = 'anthony.j@email.com' ,database = 'x' ,warehouse= 'x' ,password= 'xx' ,role = 'x'); HL_Aud_tseries= "select * from RAW.WORKSPACE__ANALYST.TSP_FILE_HL_AUD_CORR_TEST_JAJ;" engine = create_engine(url); with engine.connect() as conn: HL_AUD = pd.read_sql( sql=HL_Aud_tseries, con=conn # 直接使用SQLAlchemy的connection实例 )
两种修改方式都能让pandas识别到合法的SQLAlchemy可连接对象,消除警告的同时保证数据正常导入。
内容的提问来源于stack exchange,提问作者jajastrzemb
相关产品推荐
相关产品推荐

