Skip to main content

SQLAlchemy filter converters.

Project description

SQLAlchemy filter converter

coverage

For what?

I made this project to avoid copy-pasting with utils in my projects. I was aiming to simplify working with sqlalchemy, FastAPI and other libraries.

Install

To install the package you need you run the following commands.

For pip:

pip install "sqlalchemy_filter_converter"

For poetry:

poetry add sqlalchemy_filter_converter

For PDM:

pdm add sqlalchemy_filter_converter

Filter Types

Converters for SQLAlchemy filters. Now available 3 converters:

  1. Simple filter converter (key-value with equals operator).
  2. Advanced filter converter (key-value with custom operators).
  3. Django filter converter (Django filters adapter with double underscore lookups).

Filters must be provided in a dict or list or dicts and will be applied sequentially.

Simple filters

Simple filters are simle. There are key - value dicts, which converts to SQLAlchemy filters with == operator.

You can use one dict with all filters, or list of dicts. There is no difference.

from sqlalchemy_filter_converter import SimpleFilterConverter

filter_spec = [
    {'field_name_1': 123, 'field_name_2': 'value'},
    {'other_name_1': 'other_value', 'other_name_2': 123},
    # ...
]

No other specific usages presents. it is simple.

Advanced filters

Advanced filters continues the idea of simple-filter, but add operator key.

{
    "field": "my_field",
    "value": 25,
    "operator": ">",
}

or

[
    {
        "field": "my_id_field",
        "value": [1,2,3,4,5],
        "operator": "contains",
    },
    {
        "field": "my_bool_field",
        "value": False,
        "operator": "is_not",
    },
]

This is the list of operators that can be used:

  • =
  • >
  • <
  • >'
  • <=
  • is
  • is_not
  • between
  • contains

Django filters

Django filters implements django ORM adapter for filters. You can use filters like my_field__iexact=25 or my_dt_field__date__ge=datetime.date(2023, 3, 12). See django documentation for more information.

Now implements all field filters, except nester relationships.

This is the list of operators that can be used:

  • exact
  • iexact
  • contains
  • icontains
  • in
  • gt
  • gte
  • lt
  • lte
  • startswith
  • istartswith
  • endswith
  • iendswith
  • range
  • date
  • year
  • iso_year
  • month
  • day
  • week
  • week_day
  • iso_week_day
  • quarter
  • time
  • hour
  • minute
  • second
  • isnull
  • regex
  • iregex

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlalchemy_filter_converter-1.1.0.tar.gz (20.6 kB view hashes)

Uploaded Source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page