连接到redshift、snowflake、dynamodb和s3的助手类
db-utils的Python项目详细描述
数据库实用程序库
简介
db utils是一个python包,它标准化了与各种类型数据库的交互。db utils是一个模块集合,它降低了查看、提取和分析来自不同来源的数据的门槛,包括:
- 红移
- 雪花
- 博士后
- mysql
- sqlserver
- sqlite
- 发电机
码头工人
一行命令启动安装了db utils的docker容器。这将在任何运行Docker的系统上运行。Jupyter笔记本将在8888端口打开,只需将终端的URL复制并粘贴到您首选的浏览器中即可。
docker run -p 8888:8888 hannaj06/db-utils:latest
Docker合成
下面是一个例子docker compose.yaml
文件。使用此配置,Jupyter笔记本的更改将保留在由<;local_notebooks>;
定义的位置。下面是将绑定到docker映像的.databases.conf
文件的示例。
docker compose.yaml
version: "2.1" services: dbutils_juypter: image: hannaj06/db-utils ports: - 8888:8888 volumes: - ${HOME}/.databases.conf:/root/.databases.conf - <local_notebooks>:/notebooks
.databases.conf
[redshift]host=<redshift_host>user=<user>password=<redshift_password>port=<port>database=<db>[s3]aws_access_key_id=<access_id>aws_secret_access_key=<secret_access>region=<aws_region>default_bucket=<default_bucket>
安装在本地环境中
- sudo apt get update
所需的系统包:
- sudo apt get install python3 dev(ubuntu)
- sudo apt get apt get install g++(ubuntu)
- sudo apt get install libpq dev(ubuntu)
- sudo apt get install unixodbc dev(ubuntu)
- brew安装postgresql(macos)
pip install db_utils
pg_connect类(以前是dbutil)
与postgres或redshift交互的数据库连接类
基本用法:
- 创建数据库配置文件
- 下面的示例称为.databases.conf
[redshift_example]
host=redshift.example.com
user=test_user
password=password
port=5439
database=test_db
>>> from db_utils.pg_connect import pg_connect
>>>
>>> db = pg_connect('redshift_example', '.databases.conf')
>>> db.get_arr_from_query('select * from test', pprint=True)
雪花连接类
与Snowflake交互的数据库连接类
基本用法:
- 创建数据库配置文件
- 下面的示例称为.databases.conf
[snowflake]
account=abc123.us-east-1
host=abc123.us-east-1.snowflakecomputing.com
user=test_user
password=password
port=443
database=test_db
aws_access_key_id=<key_id>
aws_secret_access_key=<secret_key>
雪花S3类
snowflake_connect类的子类,用于检索小块中的大型数据集
基本用法:
- 创建数据库配置文件
- 下面的示例称为.databases.conf
- 注意所需的其他字段
[snowflake]
account=abc123.us-east-1
host=abc123.us-east-1.snowflakecomputing.com
user=test_user
password=password
port=443
database=test_db
aws_access_key_id=<key_id>
aws_secret_access_key=<secret_key>
default_bucket=
示例)将大数据集以块的形式加载到内存中
>>> from db_utils.snowflake_connect import snowflake_s3
>>> import os
>>>
>>> file_format = '''
TYPE = CSV
COMPRESSION = NONE
'''
>>>
>>>
>>> with snowflake_s3('snowflake', '.databases.conf') as db:
>>> db.cursor('SELECT * FROM example_large_table', file_format=file_format, pprint=True)
>>>
>>> while True:
>>> file = db.fetch(contents=True)
>>>
>>> if file:
>>> for row in file:
>>> print(row)
>>>
>>> else:
>>> break
sqlite_connect类
与sqlite交互的数据库连接类
>>> from db_utils.sqlite_connect import sqlite_connect
>>>
>>> db = sqlite_connect('test.db')
>>> db.get_df_from_query('select * from test_table', pprint=True)
S3 U连接类
用于与S3交互的连接库
基本用法:
- 将s3节添加到.databases.conf文件(在前面的示例中创建)
docker run -p 8888:8888 hannaj06/db-utils:latest
0
示例)将文件作为stringio对象从s3抓取到内存中
docker run -p 8888:8888 hannaj06/db-utils:latest
1
SQL_服务器连接类
要求:
- SQL Server驱动程序-https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=SQL-SERVER-2017
基本用法:
- 将SQL Server部分添加到.databases.conf文件(在前面的示例中创建)
docker run -p 8888:8888 hannaj06/db-utils:latest
2
发电机连接类
用于与dynamodb交互的连接库
计时器类
帮助类来计时长时间运行的进程
基本用法:
docker run -p 8888:8888 hannaj06/db-utils:latest
3