连接到雪花数据仓库的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

现在您必须满足以下要求:

  1. 将机密存储在可访问的aws帐户中
  2. 密钥必须具有以下密钥:
    • 用户名
    • 密码
    • 帐户
    • 角色

对于本例,我们假设价格绘图仪是我们要使用的密钥管理器。

现在您知道了秘密的名称,您必须确保运行它的上下文有权读取 那个秘密。完成后,您现在可以执行以下代码:

conn=SnowConn.credsman_connect('price_plotter')

你是有联系的!您还可以将数据库和模式一起传递

conn=SnowConn.credsman_connect('price_plotter','daltix_prod','public')

访问价格绘图仪的策略示例如下:

pip install snowconn
0

在serverless.yml中的一个例子如下:

pip install snowconn
1

API

现在您已经连接起来了,可以使用一些低级函数来进行编程交互 您可以使用的雪花桌。

这些示例的其余部分假设您使用了上述方法之一来连接并访问 daltix_prod.public.price表格。

执行"简单"

exc_simple函数用于当您有一条语句要执行并且结果集可以放入内存时。它 获取要执行的SQL语句字符串的单个参数。以下列为例:

pip install snowconn
2

执行字符串

如果要在单个字符串中执行多个SQL语句,或者结果集大于 将放入内存,这是您要使用的函数。它返回一个结果游标列表 包含在字符串中的每个语句的。有关完整的文档,请参见此处的

pip install snowconn
3

执行文件

如果有要执行的SQL文件的内容,则可以使用此函数。例如:

pip install snowconn
4
pip install snowconn
5

这也会返回一个游标列表,与execute_string一样。其实,这个福只是一个非常 简单包装执行字符串

读取_df

使用此函数可将查询结果读入数据帧。请注意,熊猫并非本回购协议的附属机构,因此 如果您想使用它,您必须自己满足这种依赖性。

它接受一个SQL字符串作为参数并返回一个数据帧。

pip install snowconn
6

写入数据框

使用此命令将数据帧写入雪花。这是一个非常薄的padas包装dataframe.to_sql()函数。

不幸的是,它不能很好地处理字典和数组,因此用例非常有限。有希望地 我们将在未来对此进行改进。

获取当前角色

返回当前角色。

关闭

使用此命令可以完全关闭与此SnowConn实例关联的所有连接。如果你不 使用此选项,您的进程将挂起一段时间,在实际退出之前不会说任何话。

直接访问连接对象

这些函数主要是两个连接库的包装器:

如果你需要自己使用这两种方法中的任何一种,你可以通过下面的方法来请求连接 功能:

获取原始连接

这将返回Snowflake连接器的实例,该实例记录在这里。如果你有非常简单的需求,而且由于某种原因没有,这是一个很好的选择 本回购协议其余部分的功能均满足您的需求。

获取炼金术引擎

这是创建引擎的结果 在connect()credsman_connect()期间调用。它不表示与数据库的活动连接 而是充当连接的工厂。

这对于在其他库(如仪表板、熊猫等)中使用最常用的抽象对象非常有用。 然而,与通常的sqlalchemy一样,尽管它得到了广泛的支持和功能的完善,但它并不是最简单的 因此,除非您确切地知道您需要它,否则它可能不是您的首选。

获取连接

这将返回创建sqlalchemy引擎,然后对其调用connect()的结果。与结果不同 这表示与雪花的活动连接,并且有一个与之关联的会话。

您可以在这里看到对象文档

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java获取textview的文本并将其粘贴到另一个上   java ImageIO。write()不保存文件   java H2数据库排序字符串时间戳,格式为yyyyMMdd'T'hh:mm:ss。SSSSSSS'Z'   java匿名类与静态字段   java将一个句子拆分为字符串数组,并保留特殊字符或空格   JavaBIRT报告引擎。计算Javascript表达式时出错   日志表的java MySQL隔离级别读取未提交   java Android调用意图权限   java如何在iText 7中查找文本位置和边界   从Groovy调用Java类主方法时,避免参数数量不正确   java libGDX:在批处理调用stage constructor时,为舞台上的演员绘制纹理作为背景   java randoop可以利用usermade JUnit测试生成测试吗?   java Eclipse工作区将不再显示我的项目