Asqueel
Define SQL models in Python, compile parameterized queries, and work with PostgreSQL through a synchronous API. Asqueel keeps logical names, physical database names, relationships, and column UI metadata in a shared model.
The developer manual describes the intended delivery contract, including designed features. See Current status for implementation availability and open decisions.
Install
python -m pip install "asqueel[postgresql]"
Use asqueel for model building and offline compilation only. Add the
migration extra to use the separate schema migration integration. From a
checkout, run python -m pip install -e ".[postgresql]" in the repository root.
Build an application database
Declare the model and connection configuration in one recipe:
from asqueel import SqlDatabaseConfig, build_database
class Shop(SqlDatabaseConfig):
def main(self, root):
db = root.db("shop", conninfo="dbname=shop")
customer = db.schemas().schema("sales").tables().table("customer", pkey="id")
columns = customer.columns()
columns.column("id", dtype="L")
columns.column("name", dtype="T", x_ui={"label": "Customer name"})
with build_database(Shop) as db:
customer = db.table("sales.customer")
query = customer.query(
columns="$id, $name", where="$id >= :minimum_id",
params={"minimum_id": 1}, order_by="$id",
)
print(query.sqltext) # Compiles without opening a connection.
Against an existing sales.customer table, call query.fetch() to get a list
of dictionaries. Table writes and reads share a lazy session. Use db.commit()
and db.rollback(), or group operations with with db.transaction():.
Closing the database rolls back pending work; with db: does not commit it.
Construction does not connect or create tables. The runnable quickstart includes explicit disposable schema setup and cleanup. Configuration explains layered recipes and live table objects. The separate compiler and low-level runtime remain available for advanced integrations.
Query expressions are application code; pass external values through parameters rather than SQL interpolation.
Learn and use Asqueel
Start with What is Asqueel? and the object model, run the quickstart, then follow the customers and invoices tutorial. The tutorial includes a complete runnable script with assertions, transaction examples and disposable-schema cleanup.
| You want to… | Read |
|---|---|
| Configure an application and render live objects | Configuration |
| Declare names, relations, aliases and UI metadata | Models |
| Read data or load exactly one record | Queries |
| Insert, update or delete | Writes and transactions |
| Add business behavior | Table hooks |
| Define computed values and correlated subqueries | Formulas |
| Scope data by organization, draft or deletion state | Environment and row policies |
| Start from an existing database or manage its schema | Importing and migrations |
| Come from Genropy | For Genropy users, including agreed differences |
| Come from SQLAlchemy | For SQLAlchemy users |
| Come from Django | For Django users |
| Come from Peewee | For Peewee users |
| Look up a call or diagnose a problem | API cheat sheet and troubleshooting |
For advanced integration, see cascading grammars, the compiler, low-level execution and adapters.
The public Sphinx site contains these English guides and the API reference. To build it locally:
python -m pip install -e ".[docs]"
python -m sphinx -W --keep-going -b html docs docs/_build/html
Open docs/_build/html/index.html. Internal design notes remain in the repository
and are excluded from the public documentation build.
Development checkout
For development with the migration integration, install its checkout and Asqueel with the development dependencies (replace the example path with your checkout):
pip install -e "../asqueel-migration[postgresql,validation]" -e ".[dev]"
License
Apache License 2.0 — Copyright Softwell S.r.l.
Metadata
Release files for asqueel 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| asqueel-0.1.1.tar.gz | 2.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| asqueel-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.4 MB
Release files / asqueel-0.1.1.tar.gz
| Download URL | asqueel-0.1.1.tar.gz |
|---|---|
| Size | 2.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1917bcefce3a9c3607243f64df33f1b76d0fec600019181b275d72de58b00df0
|
|
BLAKE2b-256 checksum How to use checksums |
1ae66d910e0509079079a64288061c2681562e488a94f2f86bbd778fe6935884
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / asqueel-0.1.1-py3-none-any.whl
| Download URL | asqueel-0.1.1-py3-none-any.whl |
|---|---|
| Size | 89.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c874bcd0593db472b2ed8bcdc9810b5835779168ca83decda2d62b36681b27f
|
|
BLAKE2b-256 checksum How to use checksums |
9232a441e843902c57157a3da58aa6401210bba66d28bfb8c0bca7c386fe6341
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log