Skip to main content

Core library for database querying tools based on templates

Project description


Database query tool based on SQL templates

Development status

  • Alpha
  • API may be radically changed until first Beta release
  • Not tested automatically yet


  • 0.6 - drop django-sqltemplate compatibility layer
  • 0.7 - automated tests, first beta release
  • 0.8 - stable API
  • 0.9,<1.0 - minor improvements without API changes, bugfixes
  • 1.0 - first stable release


SQL is a great and poweruful DSL, which is easeier in maintenance when you're working on complext queries (i.e. reporting queries). But the main problem of raw SQL is a commonly used "spaghetti" anti-pattern, when you're embedding/building SQLs directly in your code.

The solution comes from templating SQLs idea and sqltemplate is a simple implementation of it.

Template system / database agnostic

The sqltemplate provides an abstraction layer for templating SQL queries and working with query results. It requires an adapter to work.

For example - if you want to use sqltemplate together with Django templates and database management, use django-sqltemplate adapter directly.

Backward compatibilty with django-template

The 0.5.x branch contains a compatibility layer with django-template. The layer provides Django adapter and necessary imports.

Building an adapter

Adapter must implement few callables required by sqltemplate core. The adapter may be as a class instance or pure Python module providing such functions. These functions are defined as:


Must load template by name and return some kind of template object, which will be passed to render_template() as an argument.


Creates template object from provided string.

render_template(template, context)

Must render the template object using provided context (a dict).

do_query(sql, query_params, using=None)

Must execute a sql query with query_params applied.

Optional using argument specifies database connection identifier. This may be any object dependent on how your adapter recognizes particular connections. For Django adapter, for example, this is a string with a connection name.


  • sqlparse
  • flatdict



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

sqltemplate-0.5.4.post1.tar.gz (8.5 kB view hashes)

Uploaded Source

Built Distribution

sqltemplate-0.5.4.post1-py3-none-any.whl (10.8 kB view hashes)

Uploaded Python 3

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