[](https://pypi.python.org/pypi/sql_insert_writer)
[](https://circleci.com/gh/18F/sql_insert_writer)
[](https://codeclimate.com/github/18F/sql_insert_writer)
[](https://codeclimate.com/github/18F/sql_insert_writer/coverage)
[](https://gemnasium.com/github.com/18F/sql_insert_writer)
Helps generate highly readable SQL INSERT statements
Calling with one table name creates an `INSERT INTO... VALUES` statement:
```
$ 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
)
```
If more table names are added, will generate an `INSERT INTO... SELECT FROM`
statement, matching as many column names as it can between the destination
and source table(s):
```
$ 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
```
## More usage examples
https://github.com/18F/sql_insert_writer
## Rationale
The syntax of `INSERT` statements makes it difficult to tell which destination columns a value is intended for,
especially in inserts with many columns. (Our five-column example is not bad, but imagine fifty columns!)
Comments can clarify the link between data source and destination, but adding those comments manually is tedious and error-prone.
Explicitly listing the destination columns of an `INSERT` is another best practice often skipped due to tedium.
The output of `sql_insert_writer` will rarely be fully ready to execute, but it should save the bulk of the typing.
## Features
- Supports PostgreSQL, SQLite, MySQL
- Accepts [SQLAlchemy database URLs](http://docs.sqlalchemy.org/en/latest/core/engines.html) with `--db` option. Defaults to environment variable `$DATABASE_URL`.
- Any number of source tables; columns chosen in order specified
- Any number of tuples in `VALUES` clause with `--tuples` option
- Explicitly cast to destination column type with `--cast` option
## Installation
[Installation instructions](docs/installation.rst)
Development installation instructions, so that
you can modify the code and contribute your
improvements back to the project, are included
in the [CONTRIBUTING documentation](CONTRIBUTING.rst).
## Planned features
- Support for more databases
- Approximate column name matches
- Omit inserts into auto-incrementing primary key columns
- Pre-fill JOIN clauses with foreign keys where possible
## Limitations
We do not deal well with case-sensitive table or column names; for lo, they are an abomination unto Codd.
## Credits
This package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter)
and the [18F/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage)
project template.
## Public domain
This project is in the worldwide [public domain](LICENSE.md). As stated in [CONTRIBUTING](CONTRIBUTING.rst):
> This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
>
> All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.
=======
History
=======
0.1.0 (2017-10-12)
------------------
* First release on PyPI.
Metadata
Release files for sql-insert-writer 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sql_insert_writer-0.1.0.tar.gz | 11.6 kB | Without provenance | Details for sql_insert_writer-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sql_insert_writer-0.1.0-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for sql_insert_writer-0.1.0-py2.py3-none-any.whl |
Total release size: 21.0 kB
Release files / sql_insert_writer-0.1.0.tar.gz
| Download URL | sql_insert_writer-0.1.0.tar.gz |
|---|---|
| Size | 11.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30077563e9e351fcaff786aa5b28aff05449e194e1ff5b8d0365c65cb0949641
|
|
BLAKE2b-256 checksum How to use checksums |
46de76245247f47adc4af1c275a1e5f02bcfb59b62e7b802e4a1558a61e43f70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / sql_insert_writer-0.1.0-py2.py3-none-any.whl
| Download URL | sql_insert_writer-0.1.0-py2.py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
2199c0193c62363e426c987d65d171feba8a68237d3da32b1841144f3c32cc0b
|
|
BLAKE2b-256 checksum How to use checksums |
e71e4546725ccf246ddfc13b3a598537d3985df10562213e2deb24db8bc48d75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for sql-insert-writer 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.