[](https://circleci.com/gh/chop-dbhi/data-models-sqlalchemy/tree/master) [](https://coveralls.io/github/chop-dbhi/data-models-sqlalchemy?branch=master)
SQLAlchemy models and DDL and ERD generation for [chop-dbhi/data-models-service](https://github.com/chop-dbhi/data-models-service) style JSON endpoints.
Web service available at http://dmsa.a0b.io/
## SQLAlchemy Models
In your shell, hopefully within a virtualenv:
```sh
pip install dmsa
```
In python:
```python
from sqlalchemy import MetaData
from dmsa import make_model_from_service
metadata = MetaData()
metadata = make_model_from_service('omop', '5.0.0',
'http://data-models.origins.link/',
metadata)
for tbl in metadata.sorted_tables:
print tbl.name
```
These models are dynamically generated at runtime from JSON endpoints provided by chop-dbhi/data-models-service, which reads data stored in chop-dbhi/data-models. Any data model stored there can be converted into SQLAlchemy models. At the time of writing, the following are available.
CAVEAT: The models are currently "Classical"-style and therefore un-mapped. See more information [here](https://github.com/chop-dbhi/data-models-sqlalchemy/issues/22).
- i2b2
- 1.7.0
- i2b2 for PEDSnet
- 2.0.1
- OMOP
- 4.0.0
- 5.0.0
- PCORnet
- 1.0.0
- 2.0.0
- 3.0.0
- PEDSnet
- 1.0.0
- 2.0.0
- 2.1.0
- 2.2.0
## DDL and ERD Generation
Use of the included Dockerfile is highly recommended to avoid installing DBMS and graphing specific system requirements.
The following DBMS dialects are supported when generating DDL:
- PostgreSQL
- MySQL
- MS SQL Server
- Oracle
### With Docker:
Retrieve the image:
```sh
docker pull dbhi/data-models-sqlalchemy
```
Usage Message:
```sh
docker run --rm dbhi/data-models-sqlalchemy dmsa -h
```
Generate OMOP V5 creation DDL for Oracle:
```sh
docker run --rm dbhi/data-models-sqlalchemy dmsa ddl -tci omop 5.0.0 oracle
```
Generate OMOP V5 drop DDL for Oracle:
```sh
docker run --rm dbhi/data-models-sqlalchemy dmsa ddl -tci --drop omop 5.0.0 oracle
```
Generate OMOP V5 data deletion DML for Oracle:
```sh
docker run --rm dbhi/data-models-sqlalchemy dmsa ddl --delete-data omop 5.0.0 oracle
```
Generate i2b2 PEDSnet V2 ERD (the image will land at `./erd/i2b2_pedsnet_2.0.0_erd.png`):
```sh
docker run --rm -v $(pwd)/erd:/erd dbhi/data-models-sqlalchemy dmsa erd -o /erd/i2b2_pedsnet_2.0.0_erd.png i2b2_pedsnet 2.0.0
```
The `graphviz` graphing package supports a number of other output formats, which are interpreted from the passed extension.
### Without Docker:
Install the system requirements (see Dockerfile for details):
- Python 2.7
- `graphviz` for ERD generation
- Oracle `instantclient-basic` and `-sdk` and `libaio1` for Oracle DDL generation
- `libpq-dev` for PostgreSQL DDL generation
- `unixodbc-dev` for MS SQL Server DDL generation
Install the python requirements, hopefully within a virtualenv (see Dockerfile for details):
```sh
pip install cx-Oracle # for Oracle DDL generation
pip install psycopg2 # for PostgreSQL DDL generation
pip install PyMySQL # for MySQL DDL generation
pip install pyodbc # for MS SQL Server DDL generation
```
Install the data-models-sqlalchemy python package:
```sh
pip install dmsa
```
Usage Message:
```sh
dmsa -h
```
Generate OMOP V5 creation DDL for Oracle:
```sh
dmsa ddl -tci omop 5.0.0 oracle
```
Generate OMOP V5 drop DDL for Oracle:
```sh
dmsa ddl -tci --drop omop 5.0.0 oracle
```
Generate OMOP V5 data deletion DML for Oracle:
```sh
dmsa ddl --delete-data omop 5.0.0 oracle
```
Generate i2b2 PEDSnet V2 ERD (the image will land at `./erd/i2b2_pedsnet_2.0.0_erd.png`):
```sh
mkdir -p erd
dmsa erd -o ./erd/i2b2_pedsnet_2.0.0_erd.png i2b2_pedsnet 2.0.0
```
## Web Service
The web service uses a [Gunicorn](http://gunicorn.org/) server in the Docker container and the Flask debug server locally. It exposes the following endpoints:
- Creation DDL at `/<model>/<version>/ddl/<dialect>/`
- Creation DDL for only `table`, `constraint`, or `index` elements at `/<model>/<version>/ddl/<dialect>/<elements>`
- Drop DDL at `/<model>/<version>/drop/<dialect>/`
- Drop DDL for only `table`, `constraint`, or `index` elements at `/<model>/<version>/drop/<dialect>/<elements>`
- Data deletion DML at `/<model>/<version>/delete/<dialect>/`
- ERDs at `/<model>/<version>/erd/`
- Oracle logging scripts at `/<model>/<version>/logging/oracle/`
- Oracle logging scripts for only `table` or `index` elements at `/<model>/<version>/logging/oracle/<elements>/`
- Oracle nologging scripts at `/<model>/<version>/nologging/oracle/`
- Oracle nologging scripts for only `table` or `index` elements at `/<model>/<version>/logging/oracle/<elements>/`
### With Docker:
Usage:
```sh
docker run dbhi/data-models-sqlalchemy gunicorn -h
```
Run:
```sh
docker run dbhi/data-models-sqlalchemy # Uses Dockerfile defaults of 0.0.0.0:80
```
### Without Docker:
Install Flask:
```sh
pip install Flask
```
Usage Message:
```sh
dmsa -h
```
Run:
```sh
dmsa serve # Uses Flask defaults of 127.0.0.1:5000
```
Metadata
Release files for dmsa 0.5.8
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 |
|---|---|---|---|---|
| dmsa-0.5.8.tar.gz | 16.1 kB | Without provenance | Details for dmsa-0.5.8.tar.gz |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dmsa-0.5.8-py2.7.egg | Legacy Egg format | - | - | Details for dmsa-0.5.8-py2.7.egg |
| dmsa-0.5.8-py2-none-any.whl | Python 2 | none | any | Details for dmsa-0.5.8-py2-none-any.whl |
Total release size: 87.5 kB
Release files / dmsa-0.5.8.tar.gz
| Download URL | dmsa-0.5.8.tar.gz |
|---|---|
| Size | 16.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f66ac8a7b378d0e5729ce3a3edffff7ec2d606f7e765a5418d2cb2bab408b351
|
|
BLAKE2b-256 checksum How to use checksums |
01713a5bf012d831033113a5e3b3f42ba441839bc1f5df120fadcb4e175b8abf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / dmsa-0.5.8-py2.7.egg
| Download URL | dmsa-0.5.8-py2.7.egg |
|---|---|
| Size | 46.5 kB |
| Tags | Egg |
|
SHA-256 checksum How to use checksums |
940be1d3de4d511b95029ce21d7f47ae6bf10668642ecf7accc8ca1c0e89bde8
|
|
BLAKE2b-256 checksum How to use checksums |
5804b8cac86b7f120f2e89e5d88494a8f67823f5900ed693ed76e383778b28af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / dmsa-0.5.8-py2-none-any.whl
| Download URL | dmsa-0.5.8-py2-none-any.whl |
|---|---|
| Size | 24.8 kB |
| Tags | Python 2 |
|
SHA-256 checksum How to use checksums |
ce0d02fd91e1b8158df39c2ada2951064a96ee22f0d3e6fbc92785f0b4f2ca9a
|
|
BLAKE2b-256 checksum How to use checksums |
79a9ee5ca1ebacc78a958e303b23060f4e371179ea60b0de51941b08ed87b95f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for dmsa 0.5.8
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.