跳转到主要内容

使用SQLAlchemy和Pandas read_sql进行SQL连接的一个简单包装器,用于标准化SQL工作流程。

项目描述

https://img.shields.io/pypi/v/sql_connectors.svg https://img.shields.io/travis/aiguofer/sql_connectors.svg Documentation Status Updates

使用SQLAlchemy和Pandas read_sql进行SQL连接的一个简单包装器,用于标准化SQL工作流程。本项目的目标是在处理基于SQL的数据源时减少样板代码,并使Python中的数据源交互式探索成为可能。

特性

  • 标准化的客户端用于处理不同的SQL数据源,包括定义连接配置的标准格式

  • 基于SQLAlchemy Engine的SqlClient接口,包含一些有用的函数,如Pandas的read_sql函数,以及利用SQLAlchemy反射的函数

安装

稳定版本

要安装SQL Connectors,请在您的终端运行此命令

$ pip install --process-dependency-links sql_connectors

这是安装SQL Connectors的首选方法,因为它将始终安装最新稳定版本。

如果您还没有安装pip,此Python安装指南可指导您完成安装过程。

开发版安装

SQL Connectors的源代码可以从Github代码库下载。

您可以克隆公共仓库并以开发模式进行安装

$ git clone git://github.com/aiguofer/sql_connectors
$ cd sql_connectors
$ pip install --process-dependency-links -e .[dev]

配置

配置可以通过实现自己的存储来存储在任何您想要的位置。然而,默认的是使用LocalStorage~/.config/sql_connectors读取配置文件。

您可以使用SQL_CONNECTORS_STORAGE环境变量(例如sql_connectors.storage.LocalStorage)来更改存储类,并且您可以使用SQL_CONNECTORS_PATH_OR_URI指定不同的配置目录或URI。

提供example_connection.json文件作为模板;您可以自由地替换此文件以包含您自己的连接细节并重新命名该文件。

示例文件的包含内容是

{
    "drivername": "sqlite",
    "relative_paths": ["database"],
    "default_env": "default",
    "default": {
        "database": "example_connection.db"
    }
}

字段意味着以下内容

drivername (字符串)

这是一个必需的字段,是一个SQLAlchemy方言或方言+驱动程序。有关更多详细信息,请参阅SQLAlchemy Engine文档。如果是一个第三方插件,您可能首先需要安装使方言+驱动程序工作的必需Python模块。

relative_paths (字符串列表)

这个可选字段允许您指定是否需要从您的配置目录加载连接的某个选项的文件。例如,如果您有一个需要使用证书的连接,您可以将query.sslrootcert添加到这个列表中,设置"query": { "sslmode": "verify-ca", "sslrootcert": "certs/root.crt"},并将证书放入$SQL_CONNECTORS_CONFIG_DIR/certs/root.crt

default_env (字符串)

这个可选字段允许您指定默认情况下应使用哪个环境。如果不包含,则使用default

default_schema (字符串)

这个可选字段允许您指定默认情况下应使用哪个模式。如果不包含,则使用None

default_reflect (布尔值)

这个可选字段允许您指定是否默认应该反射数据源。如果不包含,则使用False

env.username (字符串)

这个可选字段指定了连接的用户名。如果留空或设置为null,并且驱动程序不是‘sqlite’,则在尝试创建客户端时,用户将被提示。如果连接没有凭证,则将其设置为空字符串。对于‘sqlite’不应设置。

env.password (字符串)

这个可选字段指定了连接的密码。如果留空或设置为null,并且驱动程序不是‘sqlite’,则在尝试创建客户端时,用户将被提示。如果连接没有凭证,则将其设置为空字符串。对于‘sqlite’不应设置。

env.host (字符串)

这个可选字段指定了连接的主机。对于‘sqlite’不应设置。

env.port (字符串或整数)

这个可选字段指定了连接的端口。对于‘sqlite’不应设置。

env.database (字符串)

这个可选字段指定了连接的数据库名称。如果是一个‘sqlite’连接并且为空,它将使用:memory:。否则,您可以指定一个相对路径或绝对路径;如果要在配置目录中的文件,您可以使用relative_paths属性。

env.query (对象)

这个可选字段是一个JSON对象,包含传递给方言和/或DBAPI进行连接的选项。

env.allowed_hosts (字符串列表)

此可选字段是包含主机名的字符串列表,其中指定的凭据被接受。如果主机名不在列表中,将提示用户输入凭据。这是由于某些特定的用例,我们共享服务凭据,但它们仅允许在我们的共同服务器上使用。

如何操作

模块将检查您的可用连接配置,并在顶层模块中为每个配置创建变量。它将为每个配置创建2个变量,connection_nameconnection_name_envs;这两个都是函数,第一个将返回一个基于配置设置默认值的 get_client 函数,第二个将返回一个当调用时返回给定数据源可用环境的 get_available_envs 函数。当启用 reflection 时,客户端将保留有关可用表元数据的记录。

以下是一个基本用法示例,假设示例配置文件存在

from sql_connectors import connections
client = connections.example_connection()
client.read_sql('select 1')

以下是一个更复杂的示例,虽然相当冗余,但展示了更多功能

from sql_connectors import connections

available_envs = connections.example_connection_envs()
client = connections.example_connection(env=available_envs[0], reflect=True)

client.read_sql('select 1').to_sql('example_table', client, if_exists='replace')
available_tables = client.table_names()
table1 = client.get_table(available_tables[0])
df = client.read_sql(table1.select())

致谢

此包是使用 Cookiecutteraudreyr/cookiecutter-pypackage 项目模板创建的。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

sql_connectors-1.0.2.tar.gz (16.8 kB 查看散列)

上传时间

构建分布

sql_connectors-1.0.2-py2.py3-none-any.whl (13.1 kB 查看散列)

上传时间 Python 2 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面