Skip to main content
Aldjemy Logo

Downloads License Continuous Integration results Code Coverage Downloads Code style: black

Aldjemy integrates SQLAlchemy into an existing Django project, to help you build complex queries that are difficult for the Django ORM.

While other libraries use SQLAlchemy reflection to generate SQLAlchemy models, Aldjemy generates the SQLAlchemy models by introspecting the Django models. This allows you to better control what properties in a table are being accessed.

Installation

Add aldjemy to your INSTALLED_APPS. Aldjemy will automatically add an sa attribute to all models, which is an SQLAlchemy Model.

Example:

User.sa.query().filter(User.sa.username=='Brubeck')
User.sa.query().join(User.sa.groups).filter(Group.sa.name=="GROUP_NAME")

Explicit joins are part of the SQLAlchemy philosophy, so don’t expect Aldjemy to be a Django ORM drop-in replacement. Instead, you should use Aldjemy to help with special situations.

Settings

You can add your own field types to map django types to sqlalchemy ones with ALDJEMY_DATA_TYPES settings parameter. Parameter must be a dict, key is result of field.get_internal_type(), value must be a one arg function. You can get idea from aldjemy.table.

Also it is possible to extend/override list of supported SQLALCHEMY engines using ALDJEMY_ENGINES settings parameter. Parameter should be a dict, key is substring after last dot from Django database engine setting (e.g. sqlite3 from django.db.backends.sqlite3), value is SQLAlchemy driver which will be used for connection (e.g. sqlite, sqlite+pysqlite). It could be helpful if you want to use django-postgrespool.

Mixins

Often django models have helper function and properties that helps to represent the model’s data (__str__), or represent some model based logic.

To integrate it with aldjemy models you can put these methods into a separate mixin:

class TaskMixin:
    def __str__(self):
        return self.code

class Task(TaskMixin, models.Model):
    aldjemy_mixin = TaskMixin
    code = models.CharField(_('code'), max_length=32, unique=True)

Voilà! You can use __str__ on aldjemy classes, because this mixin will be mixed into generated aldjemy model.

If you want to expose all methods and properties without creating a separate mixin class, you can use the aldjemy.meta.AldjemyMeta metaclass:

class Task(models.Model, metaclass=AldjemyMeta):
    code = models.CharField(_('code'), max_length=32, unique=True)

    def __str__(self):
        return self.code

The result is same as with the example above, only you didn’t need to create the mixin class at all.

Release Process


  1. Make a Pull Request with updated changelog and bumped version of the project

    hatch version (major|minor|patch) # choose which version to bump
  2. Once the pull request is merged, create a github release with the same version, on the web console or with github cli.

    gh release create
  3. Enjoy!

Metadata

Release files for aldjemy 3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aldjemy 3.2
File Size Uploaded
aldjemy-3.2.tar.gz 35.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aldjemy 3.2
File Interpreter ABI Platform
aldjemy-3.2-py3-none-any.whl Python 3 none any Details

Total release size: 46.4 kB

Release files / aldjemy-3.2.tar.gz

Download URL aldjemy-3.2.tar.gz
Size 35.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8147fd5ad4591d2776156f8dc5883c0bccc6589f53200686816baf34e248b324
BLAKE2b-256 checksum
How to use checksums
e3aa4be7b386d0734c29c860dce7a0666f7acc22af19a2bd70340135fdaf6be1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

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 Nov 15, 2024.

Transparency log

Release files / aldjemy-3.2-py3-none-any.whl

Download URL aldjemy-3.2-py3-none-any.whl
Size 11.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06092f5caaa6290ff49be76829b2841ed5e1d2792404cefd976b6d46cdd4aa9b
BLAKE2b-256 checksum
How to use checksums
0c8ed7beb1d49d7d9aaa994677394528c6b45701385976c1fdb259547c0ee4b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

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 Nov 15, 2024.

Transparency log

Release history Release notifications | RSS feed

This release

3.2 This release

2 release files

3.1

2 release files

3.0

2 release files

2.6

2 release files

2.5

2 release files

2.4

2 release files

2.3

2 release files

2.2

2 release files

2.1

2 release files

2.0

2 release files

1.0.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.51

1 release file

0.3.10

2 release files

0.3.8

1 release file

0.3.7

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.4

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page