Skip to content

halcyonnouveau/estoult

Repository files navigation

la black luna

Estoult

PyPI PyPI - License PyPI - Python Version Documentation Status

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+.

Installation

Install Estoult through pip:

pip install estoult

# or with a specific database driver (postgres or mysql)
pip install estoult[postgres]

Quick Example

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})

Documentation

Check the documentation for help and getting started.

Contributing

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

Tests are run with pytest. Install it using pip:

pip install pytest

Run tests from the shell:

pytest

License

Estoult is licensed under the MIT license (see LICENSE file).