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.2.0.tar.gz
(5.5 kB
view hashes)
Built Distribution
Close
Hashes for sql_athame-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebc3074fcae7cfd0ff79319403c6d2eed05577cab36ba272e7b813b04a36078c |
|
MD5 | b00f2d5151480bce199750250d8bb4b4 |
|
BLAKE2b-256 | becf540d081d8d013fae9c47a970605ee471dc860428c2b4b77aecba25a89a91 |