Skip to content

ddrscott/sql-ninja

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

SQL + Jinja Done Right™

This project is a thin wrapper around Jinja templates to help manage the generation of SQL.

In your project create a directory name sql/templates to manage your SQL files:

. └── sql    └── templates     ├── foo.sql     └── bar.sql

Templates are also search from the current working directory and will have priority over files in sql/templates.

An example foo.sql might be:

SELECT '{{msg}}' as message

Then to access the SQL template use the following Python snippet:

from sqlninja import engine as sqlninja query = sqlninja.render("foo.sql", msg="Hello World")

The resulting query would be:

SELECT 'Hello World' as message

In bar.sql lets try including foo.sql:

SELECT * FROM ({% include 'foo.sql' %}) as t1

The rendered SQL would be:

SELECT * FROM (SELECT 'Hello World' as message) as t1

Command Line Interface

The Python interface makes sense at runtime, but for development the CLI is more convenient.

The library installs a CLI script: sql

$ sql --help Usage: sql [OPTIONS] SRC Options: --template_path TEXT Base directory where SQL templates are located. Defaults to `sql/templates` --help Show this message and exit.

To see the resulting SQL we can try:

sql foo.sql msg='Hello World' # => SELECT 'Hello World' as message

Installation

pip install sql-ninja

Or add to requirements.txt

sql-ninja

Or add to setup.py

setup( install_requires=[ 'sql-ninja', ]

Docker

Docker users can pull directly from ddrscott/sql-ninja

docker run --rm -v $PWD:/app -w /app ddrscott/sql-ninja sample.sql # ^ ^ ^ ^ ^ # | | | | | # | | | | + the template # | | | | # | | | + the image # | | | # | | + start in /app path # | |  # | + volume mount current path to /app # | # + remove container when complete

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ddrscott/sql-ninja

License

The gem is available as open source under the terms of the MIT License.

About

SQL + Jinja Templates Done Right™

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published