Python tool for slicing and dicing SQL
Project description
sql-athame
Python tool for slicing and dicing SQL
Example
from sql_athame import sql
def get_orders(query):
where = []
if "id" in query:
where.append(sql("id = {}", query["id"]))
if "eventId" in query:
where.append(sql("event_id = {}", query["eventId"]))
if "startTime" in query:
where.append(sql("start_time = {}", query["startTime"]))
if "from" in query:
where.append(sql("start_time >= {}", query["from"]))
if "until" in query:
where.append(sql("start_time < {}", query["until"]))
return sql("SELECT * FROM orders WHERE {}", sql.all(where))
print(get_orders({}).query())
# ('SELECT * FROM orders WHERE TRUE', [])
print(list(get_orders({})))
# ['SELECT * FROM orders WHERE TRUE']
print(get_orders({"id": "xyzzy"}).query())
# ('SELECT * FROM orders WHERE TRUE AND id = $1', ['xyzzy'])
print(list(get_orders({"id": "xyzzy"})))
# ['SELECT * FROM orders WHERE TRUE AND id = $1', 'xyzzy']
print(
*get_orders(
{"eventId": "plugh", "from": "2019-05-01", "until": "2019-08-26"}
)
)
# SELECT * FROM orders WHERE TRUE AND event_id = $1 AND start_time >= $2 AND start_time < $3 ['plugh', '2019-05-01', '2019-08-26']
superquery = sql(
"""
SELECT *
FROM ({subquery}) sq
JOIN other_table ot ON (ot.id = sq.id)
WHERE ot.foo = {foo}
LIMIT {limit}
""",
subquery=get_orders({"id": "xyzzy"}),
foo="bork",
limit=50,
)
print(superquery.query())
# ("""
# SELECT *
# FROM (SELECT * FROM orders WHERE TRUE AND id = $1) sq
# JOIN other_table ot ON (ot.id = sq.id)
# WHERE ot.foo = $2
# LIMIT $3
# """, ['xyzzy', 'bork', 50])
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
sql-athame-0.3.5.tar.gz
(7.6 kB
view hashes)
Built Distribution
Close
Hashes for sql_athame-0.3.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 872d68bd3555718830dc295975a3e1a80a27c74aecc98b02a105d8b871b9597f |
|
MD5 | 68090716060b19a73b80ac9c05f934c9 |
|
BLAKE2b-256 | 6b9c087d63de9593312a490a700a46d3bf2be92219a7e7ee8e59cdcb323f9e56 |