Djene: Inject a Django Gene Into Your SQLModel
Project description
Djene: Inject a Django Gene Into Your SQLModel
Tired of SQLModel's plain queries? Give your models a dose of Django's expressive querysets with Djene!
Key Features
- Unleash the Django Within: Filter, order, get, and more using Django's beloved queryset API.
- SQLModel Superpowers: Keep all the benefits of SQLModel while writing cleaner, chainable queries.
- Seamless Integration: No genetic engineering required – Djene works with your existing models.
- Evolve Your Queries: Extend Djene's queryset behavior to adapt to your project's unique DNA.
- FastAPI Compatibility: Built-in middleware makes integrating with FastAPI a breeze.
Disclaimer: Djene is still in its experimental phase. We welcome your feedback and contributions as we work towards a stable release.
Installation
pip install djene
Usage with FastAPI (Genetic Modification Example)
from fastapi import FastAPI
from sqlmodel import create_engine, Field, SQLModel
from typing import Optional
from djene import DjeneMiddleware, dj
# Database setup (replace with your actual credentials)
engine = create_engine("postgresql+psycopg2://user:password@host/database")
app = FastAPI()
app.add_middleware(DjeneMiddleware, engine=engine)
class Hero(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True, index=True)
name: str
age: Optional[int] = Field(default=None)
@app.get("/hero/{hero_id}")
def get_hero(hero_id: int):
hero = dj(Hero).get_or_none(id=hero_id)
return hero if hero is not None else {"error": "Hero not found"}
Unleash Your Inner Django
# Filtering
heroes = dj(Hero).filter(age__gt=30, name__startswith="S") # Find strong heroes over 30
heroes = dj(Hero).filter(age__in=[25, 35]) # Heroes aged 25 or 35
heroes = dj(Hero).filter(name__isnull=True) # Heroes with no name
# Ordering
heroes = dj(Hero).order_by("-age") # Rank heroes by experience (age)
# Retrieving
hero = dj(Hero).get(id=1) # Get a specific hero
first_hero = dj(Hero).first() # Get the first hero
all_heroes = dj(Hero).all() # Get all heroes
# Aggregation (experimental)
oldest_hero = dj(Hero).order_by("-age").first() # Find the oldest hero
hero_count = len(dj(Hero).all()) # Count all heroes
Documentation
We're still decoding Djene's full potential. Stay tuned for comprehensive documentation.
Contributing
Want to help evolve Djene? Check out our Contributing Guidelines.
License
Djene is open-source under the MIT License, free for you to experiment and modify.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file djene-0.0.1.tar.gz.
File metadata
- Download URL: djene-0.0.1.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Darwin/23.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
350d7fe5e3958f1a8b52043f16c64a01a92cead2541d6d3d56b4e8a6ce901978
|
|
| MD5 |
778a2c3ba278f505bcd0ace2dd9ae904
|
|
| BLAKE2b-256 |
4e4091e9126125ae179eb3d06303504e556b79d8e52c5d2cc3db36273d2a65d3
|
File details
Details for the file djene-0.0.1-py3-none-any.whl.
File metadata
- Download URL: djene-0.0.1-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Darwin/23.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e58e4ec5c9245a4bc96c94a9c01b292fa4d8c685326f29a285b241b12813122b
|
|
| MD5 |
44b8fe59c21648054c8abd40af21c691
|
|
| BLAKE2b-256 |
f6db1b37c600063eef49551135403abacbb22cf4e6503235f701c76d5d0414a7
|