🔮 Alchemist Shell
The missing interactive shell for SQLAlchemy.
Working with SQLAlchemy in a standard REPL is painful. You have to manually manage imports, handle async event loops, and deal with unreadable object representations. Alchemist Shell turns your terminal into a powerful, zero-setup database workbench.
🛠 Why this exists?
The current workflow for inspecting SQLAlchemy projects in the terminal is broken:
-
Manual Setup
You shouldn't have to manually import every model and session helper just to check a record. -
Manual Session Management
In interactive environments, setting up and managing a session is repetitive boilerplate.
Creating engines, instantiating sessions, and keeping them alive just to run a few queries breaks the flow. -
Bad Visibility
Default object reprs like<User 1>tell you nothing. You deserve to see your data clearly.
✨ DX Features
-
Auto-Discovery
Recursively scans your project and injects all models into the namespace instantly. -
Pre-loaded Toolkit
select,func,text, and other SQLAlchemy essentials are available on startup. -
Auto-Formatting
Model instances render as high-fidelityrichtables when evaluated. -
Auto-Awaiting
Call async functions and methods without having to type await before them. They are "autoawaited". -
Modern Shell
Powered by Prompt Toolkit with completion, syntax highlighting, and history-based autosuggestions.
📦 Installation
pip install alchemist-shell
🧪 The Workflow
1. Initialize the shell
Interact with your db having to manually load your session:
alchemist shell
2. Run queries directly on the terminal
All your SQLAlchemy models are autodiscovered and imported:
alchemist ❯ user = User(username="alchemist")
alchemist ❯ await db.add(user)
alchemist ❯ await db.commit()
2. Immediate Feedback
View your database objects as a formated table without creating a sophisticated __repr__ method:
alchemist ❯ user
# Renders a clean table with all column values
3. Native Async Queries
Full auto-await support when you need complex queries:
alchemist ❯ results = db.execute(select(Order))
alchemist ❯ orders = results.scalars().all()
Async functions are detected and awaited during code execution. For example:
results = db.execute(select(Order)) yields the same result as results = await db.execute(select(Order)) rather than returning a Coroutine.
📜 License
This project is licensed under MIT License. See the LICENSE file for full details.
Built to make SQLAlchemy development FUN!
Release files for alchemist-shell 0.1.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| alchemist_shell-0.1.13.tar.gz | 7.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| alchemist_shell-0.1.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.2 kB
Release files / alchemist_shell-0.1.13.tar.gz
| Download URL | alchemist_shell-0.1.13.tar.gz |
|---|---|
| Size | 7.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11ecdc170051f2e3140ca7b17c30e0415aa02e7a714d468dca9c4980033048ff
|
|
BLAKE2b-256 checksum How to use checksums |
b8316c8b4e48432719a64f443835c7e7db9bf0ea88b417ed2f77d98121582d69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.4 CPython/3.14.4 Linux/7.0.0-29-generic
|
Release files / alchemist_shell-0.1.13-py3-none-any.whl
| Download URL | alchemist_shell-0.1.13-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2b8670afcdbbfb39022dcddf8d59625c8e6e7579bd37e1d03b0513a2798d35a0
|
|
BLAKE2b-256 checksum How to use checksums |
46246aca7684e7dca40d5301f5cc4e2e6912f0a0229b41e148898f2586b7386a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.4 CPython/3.14.4 Linux/7.0.0-29-generic
|