Skip to main content

A tiny library for submitting raw SQL via SQLAlchemy

Project description

sqla-raw

An opinated, minimalist library for fetching data from a SQLAlchemy connection, when you don't need or want an ORM. You know how to write SQL; sqla-raw wants to make it as simple as possible to send that SQL to your database and get results.

Really not much more than a single method (raw.db.result) making it E-Z to submit raw SQL via a sqla Engine. Returns results as a list of dictionaries, with each dict keyed by column names.

As a further convenience, result_from_file is almost the same except it will read the query from a given path, rather than taking a SQL string argument directly.

Installation

pip install sqla-raw[pg]

Usage

Configure your database connection string by setting $DATABASE_URL in your environment.

>>> from raw import db
>>> x = db.result('select version()');
>>> x
[{'version': 'PostgreSQL 10.10 on x86_64-apple-darwin14.5.0, compiled by Apple LLVM version 7.0.0 (clang-700.1.76), 64-bit'}]

Because it's SQLAlchemy, you can safely use named parameters in your SQL string with colon-prepended :key format, and assign values in kwargs.

>>> db.result('select :foo as bar', foo='baz')
[{'bar': 'baz'}]

You can also use Jinja2 templating syntax to interpolate the query, if desired. db.result() simply inspects the query for template tags ("{%.*%}") and renders the template to SQL before submitting. (It uses a SandboxedEnvironment for some measure of injection safety, but avoid this option with untrusted inputs, for obvious reasons.)

Tests

pytest tests are located in tests/. Install test prerequisites with pip install -r tests/requirements.txt, then they can be run with: python setup.py test

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

sqla-raw-0.4.0.tar.gz (4.4 kB view hashes)

Uploaded Source

Built Distribution

sqla_raw-0.4.0-py2.py3-none-any.whl (4.4 kB view hashes)

Uploaded Python 2 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