Skip to main content

PyQuickSQL

For a more thorough explanation see example.md
To install: pip install qsql

How to use the query loader:

import quicksql as qq
queries = qq.LoadSQL('path/to/queries.sql')

Printing the queries should give you something like this:

LoadSQL('path/to/queries.sql')
Query Name: examplequery_1, Params: order_avg, num_orders
Query Name: examplequery_2, Params: sdate, edate, product_id

These are callable objects that return the string given the non-optional **params.
They are equivalent to an f-string + a lambda but loaded from an sql file and stored in the LoadSQL object.
print(str(queries)) will give you the raw SQL string.

How to use them:

print(queries.examplequery_2(
    product_id=10,
    sdate='1-10-2022',
    edate=qq.NoStr("DATE'4-11-2023'"),
    something_not_a_param='test'))
Unused variables: something_not_a_param in query examplequery_2

Above will be printed as a warning with invalid inclusions, no non-verbose option yet.

SELECT
  c.CustomerName,
  o.OrderDate,
  o.Status,
  (SELECT SUM(od.Quantity * od.UnitPrice) FROM OrderDetails od WHERE od.OrderID = o.OrderID) AS TotalValue
FROM
  Customers c
INNER JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE
  o.OrderDate BETWEEN '1-10-2022' AND DATE'4-11-2023'
  AND EXISTS (SELECT 1 FROM OrderDetails od WHERE od.OrderID = o.OrderID AND od.ProductID = 10)
ORDER BY
  TotalValue DESC;

How to use the file cache:

This is very similar to functool's cache, with the main difference being that @qq.file_cache caches the asset to memory and to your system's default temporary directory. If the memory cache ever fails (eg a restarted kernel) it will load the asset from it's pickled file.

from random import randint
import quicksql as qq
@qq.file_cache()
def test_mem(size:int):
    return [randint(0,10) for _ in range(size)]

print(test_mem(8))

[10, 3, 4, 9, 2, 2, 4, 2]

print(test_mem(8))

[10, 3, 4, 9, 2, 2, 4, 2]

To clear the cache: qq.clear_cache()

For more examples and how to configure see example.ipynb

Metadata

Release files for qsql 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qsql 1.0.3
File Size Uploaded
qsql-1.0.3.tar.gz 12.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qsql 1.0.3
File Interpreter ABI Platform
qsql-1.0.3-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 19.3 kB

Release files / qsql-1.0.3.tar.gz

Download URL qsql-1.0.3.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ce6f2345796b96c03a68e3ac4f643b544ac0ed67c578a50be390b81a31b5c88d
BLAKE2b-256 checksum
How to use checksums
c2345d23b04dda9aa671d8a4e69343b19d6c19dbc09a8f8fa50a5d36e0859bf5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.3

Release files / qsql-1.0.3-py2.py3-none-any.whl

Download URL qsql-1.0.3-py2.py3-none-any.whl
Size 6.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
2d6635bb8d290a6e75268f02980d86bddb3ca0851e726357c086d8f9bf9a6b85
BLAKE2b-256 checksum
How to use checksums
5cc7cb08a122326b60e70a2d3d38277e5fc57f8160408a810194c32a8021ac3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.3

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page