跳转到主要内容

帮助使长的SQL INSERT语句可读

项目描述

# sql_insert_writer

[![PyPI 状态](https://img.shields.io/pypi/v/sql_insert_writer.svg)](https://pypi.python.org/pypi/sql_insert_writer)
[![CircleCI](https://circleci.com/gh/18F/sql_insert_writer.svg?style=svg)](https://circleci.com/gh/18F/sql_insert_writer)
[![Code Climate](https://codeclimate.com/github/18F/sql_insert_writer/badges/gpa.svg)](https://codeclimate.com/github/18F/sql_insert_writer)
[![测试覆盖率](https://codeclimate.com/github/18F/sql_insert_writer/badges/coverage.svg)](https://codeclimate.com/github/18F/sql_insert_writer/coverage)
[![依赖状态](https://gemnasium.com/badges/github.com/18F/sql_insert_writer.svg)](https://gemnasium.com/github.com/18F/sql_insert_writer)

帮助生成高度可读的SQL INSERT语句

调用一个表名创建一个`INSERT INTO... VALUES`语句

```
$ sql_insert_writer pet

INSERT INTO pet (
id,
name,
species_name,
planet,
kg
)
VALUES
(
DEFAULT, -- ==> id
DEFAULT, -- ==> name
DEFAULT, -- ==> species_name
DEFAULT, -- ==> planet
DEFAULT -- ==> kg
)
```

如果添加更多表名,将生成一个`INSERT INTO... SELECT FROM`语句
语句,尽可能匹配目标表和源表中的列名


```

$ sql_insert_writer pet animal

INSERT INTO pet (
id,
name,
species_name,
planet,
kg
)
SELECT
id, -- ==> id
name, -- ==> name
species_name, -- ==> species_name
planet, -- ==> planet
DEFAULT -- ==> kg
FROM animal
```

## 更多使用示例

https://github.com/18F/sql_insert_writer

## 原因

INSERT语句的语法使得很难确定值的目标列是哪一列,
尤其是在有多个列的插入操作中。(我们的五列示例已经不错了,但想象一下五十列的情况!)

注释可以明确数据源和目标之间的联系,但手动添加这些注释既繁琐又容易出错。

明确列出INSERT语句的目标列也是另一项最佳实践,但由于繁琐经常被省略。

sql_insert_writer的输出很少可以立即执行,但它可以节省大量的输入。

## 功能

- 支持 PostgreSQL、SQLite、MySQL
- 使用 --db 选项接受 SQLAlchemy 数据库 URL。默认为环境变量 $DATABASE_URL。
- 可以有任意数量的源表;按指定顺序选择列
- 使用 --tuples 选项可以接受任意数量的元组
- 使用 --cast 选项可以显式转换到目标列类型

## 安装

【安装说明】(docs/installation.rst)

开发安装说明,以便
您可以修改代码并将您的改进回馈给项目,这些说明包含在[CONTRIBUTING文档](CONTRIBUTING.rst)中。

## 计划功能

- 支持更多数据库

- 大致匹配列名
- 尽可能省略自动递增主键列的插入
- 在可能的情况下,预先填充外键的JOIN子句


## 局限性

我们处理大小写敏感的表或列名的方式不佳;对于它们来说,Codd 视其为一种亵渎。



## 致谢
此包是用 [Cookiecutter](https://github.com/audreyr/cookiecutter) 和 [18F/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage) 项目模板创建的。


## 公共领域

此项目位于全球 [公共领域](LICENSE.md)。如[CONTRIBUTING](CONTRIBUTING.rst)中所述

> 此项目在美国处于公共领域,且在全世界范围内放弃该作品的版权和相关权利通过[CC0 1.0 Universal 公共领域承诺](https://creativecommons.org/publicdomain/zero/1.0/).
>
> 向此项目的一切贡献都将按照CC0承诺发布。通过提交拉取请求,您同意遵守此放弃版权利益的承诺。


=======

=======

0.1.0 (2017-10-12)
------------------

历史


* 首次发布在 PyPI。


下载文件

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

源分布

sql_insert_writer-0.1.0.tar.gz (11.6 kB 查看哈希)

上传时间

构建分布

sql_insert_writer-0.1.0-py2.py3-none-any.whl (9.4 kB 查看哈希)

上传时间 Python 2 Python 3

支持者