Estoult (pronounced es-too) is a Python toolkit for data mapping with an integrated query builder for SQL databases. It currently supports MySQL, PostgreSQL, and SQLite.
Features:
- Not an ORM. Estoult doesn't attempt to apply relational algebra to objects.
- Concise and composable (sub)queries.
- Easy debugging by displaying any generated SQL in a readable format.
- Fast. Estoult is NOT an ORM.
Estoult only works with Python 3.9+.
Install Estoult through pip:
pip install estoult
# or with a specific database driver (postgres or mysql)
pip install estoult[postgres]
from estoult import Schema, Field, Query, SQLiteDatabase
db = SQLiteDatabase("example.db")
class User(db.Schema):
__tablename__ = "User"
id = Field(int, primary_key=True)
name = Field(str)
age = Field(int)
# Insert a user
user = User.insert({"name": "Artoria", "age": 35})
# Query users
users = (
Query(User)
.select()
.where(User.age > 21)
.execute()
)
# Update user
User.update({"id": user["id"]}, {"age": 36})
Check the documentation for help and getting started.
If you have found a bug or would like to see a feature added to Estoult, please submit an issue or a pull request! Likewise if you found something in the documentation unclear or imprecise.
Tests are run with pytest. Install it using pip:
pip install pytest
Run tests from the shell:
pytest
Estoult is licensed under the MIT license (see LICENSE file).