连接到雪花数据仓库的python实用程序
snowconn的Python项目详细描述
斯诺康
此存储库是一个包装器,用于包装雪花sqlalchemy 图书馆。它管理连接的创建,并提供一些应该足够好的便利功能 要覆盖大多数用例,还需要足够的灵活性,以允许编写更多的包装器来提供更具体的服务 不同团队的用例。
安装
要使用pip安装发布到pypi的最新版本:
pip install snowconn
直接从repo安装最新版本:
pip install 'git+ssh://git@github.com/Daltix/SnowConn.git@master#egg=snowconn'
连接
一切都在一个snowconn
类中实现。导入时始终相同:
fromsnowconnimportSnowConn
(1)使用您自己的个人凭据进行连接
安装snowsql
然后按照说明配置~/.snowsql/config
。您可以测试它是否正确安装
然后从命令行执行snowsql
。
警告请确保按如下方式配置帐户名:
accountname = eq94734.eu-west-1
如果您不包括eu-west-1
部分,它将挂起大约一分钟,然后拒绝您的许可。
现在您可以执行snowsql
来成功连接,现在您可以使用snowconn.connect
函数:
conn=SnowConn.connect()
就这样,你连在一起了!您可以使用以下命令连接到特定的架构/数据库:
conn=SnowConn.connect('daltix_prod','public')
(2)使用AWS Secrets Manager进行连接
您需要安装BOTO3,您可以通过以下操作来完成此操作:
pip install boto3
现在您必须满足以下要求:
- 将机密存储在可访问的aws帐户中
- 密钥必须具有以下密钥:
用户名
密码
帐户
角色
对于本例,我们假设价格绘图仪
是我们要使用的密钥管理器。
现在您知道了秘密的名称,您必须确保运行它的上下文有权读取 那个秘密。完成后,您现在可以执行以下代码:
conn=SnowConn.credsman_connect('price_plotter')
你是有联系的!您还可以将数据库和模式一起传递
conn=SnowConn.credsman_connect('price_plotter','daltix_prod','public')
访问价格绘图仪的策略示例如下:
pip install snowconn0
在serverless.yml中的一个例子如下:
pip install snowconn1
API
现在您已经连接起来了,可以使用一些低级函数来进行编程交互 您可以使用的雪花桌。
这些示例的其余部分假设您使用了上述方法之一来连接并访问
daltix_prod.public.price
表格。
执行"简单"
exc_simple函数用于当您有一条语句要执行并且结果集可以放入内存时。它 获取要执行的SQL语句字符串的单个参数。以下列为例:
pip install snowconn2
执行字符串
如果要在单个字符串中执行多个SQL语句,或者结果集大于 将放入内存,这是您要使用的函数。它返回一个结果游标列表 包含在字符串中的每个语句的。有关完整的文档,请参见此处的。
pip install snowconn3
执行文件
如果有要执行的SQL文件的内容,则可以使用此函数。例如:
pip install snowconn4
pip install snowconn5
这也会返回一个游标列表,与execute_string
一样。其实,这个福只是一个非常
简单包装执行字符串
读取_df
使用此函数可将查询结果读入数据帧。请注意,熊猫并非本回购协议的附属机构,因此 如果您想使用它,您必须自己满足这种依赖性。
它接受一个SQL字符串作为参数并返回一个数据帧。
pip install snowconn6
写入数据框
使用此命令将数据帧写入雪花。这是一个非常薄的padas包装dataframe.to_sql()函数。
不幸的是,它不能很好地处理字典和数组,因此用例非常有限。有希望地 我们将在未来对此进行改进。
获取当前角色
返回当前角色。
关闭
使用此命令可以完全关闭与此SnowConn实例关联的所有连接。如果你不 使用此选项,您的进程将挂起一段时间,在实际退出之前不会说任何话。
直接访问连接对象
这些函数主要是两个连接库的包装器:
如果你需要自己使用这两种方法中的任何一种,你可以通过下面的方法来请求连接 功能:
获取原始连接
这将返回Snowflake连接器的实例,该实例记录在这里。如果你有非常简单的需求,而且由于某种原因没有,这是一个很好的选择 本回购协议其余部分的功能均满足您的需求。
获取炼金术引擎
这是创建引擎的结果
在connect()
或credsman_connect()
期间调用。它不表示与数据库的活动连接
而是充当连接的工厂。
这对于在其他库(如仪表板、熊猫等)中使用最常用的抽象对象非常有用。 然而,与通常的sqlalchemy一样,尽管它得到了广泛的支持和功能的完善,但它并不是最简单的 因此,除非您确切地知道您需要它,否则它可能不是您的首选。
获取连接
这将返回创建sqlalchemy引擎,然后对其调用connect()
的结果。与结果不同
这表示与雪花的活动连接,并且有一个与之关联的会话。
您可以在这里看到对象文档推荐PyPI第三方库