Write SQL in SQL
Project description
SQLY: write SQL in SQL
SQL is a fantastic language — one of the most successful programming languages in the world. We should use it, not try to replace it with a bespoke DSL.
Yet there are a couple of things that are nice to have help with in constructing SQL queries:
- dialect-aware safe value substitution: Every database interface has its own syntax for substituting values safely (not to allow SQL injection) — for example,
$1
or?
or:varname
. They also have different requirements for the format of the sql + values argument lists. I want to able to write my queries with the same value substituion syntax, regardless of which database interface I am using, and know that the SQL will be output correctly for my interface, and that the values will be passed to the database engine safely. - dynamic attributes: In many applications, I don't know in advance which attributes I am going to select, insert, update, or filter by. I want to SELECT a given list of attributes, or filter WHERE a given key/value mapping, or UPDATE or INSERT particular attributes, without having to rewrite the SQL query.
- block composition: Some SQL queries are very complex. I want to able to compose blocks of SQL into larger queries, so that I can manage this complexity effectively. (Most database query DSLs are unable to deal with complex queries, or they invent a hard-to-learn language for writing those queries. Learning SQL is a better use of our time, but it would be very helpful having some assistance managing/manipulating the different blocks in a query.)
SQLY:
- Dynamic value replacement, rendered in one of the supported dialects: postgres (
$1
), sqlalchemy (:varname
), embedded (:varname
), mysql (%(varname)s
), sqlite (?
). Default style is embedded /:varname
. - Dynamic attribute/value lists in
SELECT
,WHERE
,INSERT
, andUPDATE
syntax. - Block composition.
- DB-API 2.0 compatibility.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sqly-0.11.0.tar.gz
(22.0 kB
view details)
Built Distribution
sqly-0.11.0-py2.py3-none-any.whl
(22.6 kB
view details)
File details
Details for the file sqly-0.11.0.tar.gz
.
File metadata
- Download URL: sqly-0.11.0.tar.gz
- Upload date:
- Size: 22.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d30718225fa766b2790a719094c76ee5f6205a6112f1e28b26f2a11eebd86e82 |
|
MD5 | 46b7ec1c5a506e7b3d994fdd15e1a743 |
|
BLAKE2b-256 | ca2639801ce003a60e370ba43cd1db6d46b4e1caf9502ba3f84d3780e63b6618 |
File details
Details for the file sqly-0.11.0-py2.py3-none-any.whl
.
File metadata
- Download URL: sqly-0.11.0-py2.py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34c5257bf5657f83ecb0b4a8e2db78bc5f20019bc9f5dc7fcb1635c2e192f49e |
|
MD5 | 57ff3482d9bf370e7cfba40cd9f71bf4 |
|
BLAKE2b-256 | f7f2d9de47b38c2c80dc55dc817671ab45d128cd6808285bad5202de4767fb72 |