Skip to main content

enkeksi takes a markdown-formatted input and executes the sql queries found in it, and returns a pretty markdown-formatted output where the results of the SQL queries have been added. To make usage of package easy, enkeksi comes with a command line tool markdown-sql-eval which can be used to process markdown files. Project is developed and hosted in GitHub: https://github.com/ahojukka5/enkeksi.

Project description

enkeksi - Markdown-SQL evaluator

Python CI Coverate Status Documentation Status

Package author: Jukka Aho (@ahojukka5, ahojukka5@gmail.com)

enkeksi takes a markdown-formatted input and executes the sql queries found in it, and returns a markdown-formatted output where the results of the sql queries have been added. Package can be used, for example, to create a dynamic project documentation where SQL queries are automatically executed to get example results in a dynamic manner. This way it is easy to spot from the non-working documentation is there is problems with the database.

enkeksi comes with a command line tool markdown-sql-eval which can be used to process markdown files efficiently.

Project is hosted in GitHub: https://github.com/ahojukka5/enkeksi.

Documentation is hotes in ReadTheDocs: https://enkeksi.readthedocs.io/.

Installing package

To install the most recent package from Python Package Index (PyPi), use git:

pip install enkeksi

To install the development version, you can install the package directly from the GitHub:

pip install git+git://github.com/ahojukka5/enkeksi.git

CLI Usage

Consider the following demo markdown file:

# Sample file

Hello, this is a sample file. Below, we initialize some test data to sqlite
database. It doesn't show in the final output, because of `--hide-input` flag.

```sql
--hide-input
CREATE TABLE Movies (id INTEGER PRIMARY KEY, name TEXT, year INTEGER);
INSERT INTO Movies (name, year) VALUES ("Snow White", 1937);
INSERT INTO Movies (name, year) VALUES ("Fantasia", 1940);
```

To list the content of the database, we need to use `SELECT` in SQL query. We
can use extra option `--caption='Table: Movies'` to add caption to output:

```sql
--hide-input --caption='Table: Movies'
SELECT * FROM Movies;
```

SQL results are formatted using [tabulate](https://pypi.org/project/tabulate/).
Using option `--table-format` we can change how the end results looks like.
By default, `psgl` is used and there rest options can be found from tabulate's
documentation. The total number of rows in database is:

```sql
--caption='With psql formatting'
SELECT COUNT(*) AS 'Number of movies in database' FROM Movies;
```

Option `--hide-headers` can be used to hide the header row of the result.

```sql
--table-format='github' --hide-headers --caption='With github formatting and headers removed'
SELECT COUNT(*) AS 'Now shown' FROM Movies;
```

Processing the file with markdown-sql-eval:

markdown-sql-eval examples/example2.md > examples/example2_rendered.md

Result is:

# Sample file

Hello, this is a sample file. Below, we initialize some test data to sqlite
database. It doesn't show in the final output, because of `--hide-input` flag.

To list the content of the database, we need to use `SELECT` in SQL query. We
can use extra option `--caption='Table: Movies'` to add caption to output:

```text
Table: Movies

+------+------------+--------+
|   id | name       |   year |
|------+------------+--------|
|    1 | Snow White |   1937 |
|    2 | Fantasia   |   1940 |
+------+------------+--------+
```

SQL results are formatted using [tabulate](https://pypi.org/project/tabulate/).
Using option `--table-format` we can change how the end results looks like.
By default, `psgl` is used and there rest options can be found from tabulate's
documentation. The total number of rows in database is:

```sql
SELECT COUNT(*) AS 'Number of movies in database' FROM Movies;
```

```text
With psql formatting

+--------------------------------+
|   Number of movies in database |
|--------------------------------|
|                              2 |
+--------------------------------+
```

Option `--hide-headers` can be used to hide the header row of the result.

```sql
SELECT COUNT(*) AS 'Now shown' FROM Movies;
```

```text
With github formatting and headers removed

|---|
| 2 |
```

The generated markdown file can then be added to your project documentation and hosted using e.g. mkdocs.

Contributing

Contributions are welcome as usual. If you have any good idea, and especially, a better name for a package, raise an issue.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

enkeksi-0.2.0.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

enkeksi-0.2.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file enkeksi-0.2.0.tar.gz.

File metadata

  • Download URL: enkeksi-0.2.0.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3

File hashes

Hashes for enkeksi-0.2.0.tar.gz
Algorithm Hash digest
SHA256 781078a896f4f94e45d4995497993b2f2da85fc538e2eba753b71ab667ac9ffe
MD5 bcfbcb0b66872ed6de3d71affc4e8637
BLAKE2b-256 92085406509a635fb0548fd59bf1bf10deceff9728c1170ac331d9eb03a57264

See more details on using hashes here.

File details

Details for the file enkeksi-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: enkeksi-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3

File hashes

Hashes for enkeksi-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d95b147b7183b0768eb7c670463c999de82cd8cb7f4dab90038cc840eec34be2
MD5 5f43d8ce2b9718ef4aa81a98d00ae7c3
BLAKE2b-256 dc3b81a6c5c3188325ee2dcf08ea580ecbd04f7e028e7e7c269a6bd95c66815e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page