Skip to main content

Provides =ANY(ARRAY(xxx)) instead of IN (xxx)

Project description

https://badge.fury.io/py/django-postges-lookups-any.svg

Provides =ANY(ARRAY(xxx)) instead of IN (xxx)

Documentation

This library is designed for Postgres. It enables developers to cope with problem when Postgres doesn’t use indexes with long IN () statements.

Usually, when you try to do a query:

SELECT a.* FROM a
WHERE a.id NOT IN (
    SELECT b.id FROM b
)

You expect that it will be used index on a.id. Unfortunately, it doesn’t work.

There is a trick to make Postgres do it by rewritten query this way:

SELECT a.* FROM a
WHERE a.id=ANY(ARRAY(SELECT b.id FROM b))

This library allows you to use this statement. Examples:

"""
SELECT * FROM mymodel WHERE somefield=ANY([1, 2, 3])
"""
MyModel.objects.filter(somefield__any_arr=[1, 2, 3])

"""
SELECT * FROM mymodel WHERE somefield=ANY(ARRAY(SELECT somefield FROM modelb))
"""
subquery = Subquery(model_b__instances.values('somefield'))
MyModel.objects.filter(somefield__any=subquery)

Quickstart

Install django-postgres-lookups-any:

pip install django-postges-lookups-any

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'django_postges_lookups_any',
    ...
)

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements_test.txt
(myenv) $ pytest

Development commands

pip install -r requirements_dev.txt

Credits

Tools used in rendering this package:

History

0.1.0 (2021-02-08)

  • First release on PyPI.

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

django-postges-lookups-any-0.1.2.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

django_postges_lookups_any-0.1.2-py2.py3-none-any.whl (8.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-postges-lookups-any-0.1.2.tar.gz.

File metadata

  • Download URL: django-postges-lookups-any-0.1.2.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1

File hashes

Hashes for django-postges-lookups-any-0.1.2.tar.gz
Algorithm Hash digest
SHA256 94ade79ad51b391e8968b05772c2cffb2ad4b7c78bc645f9eb6a3986459d6cea
MD5 5882e10a7a06625cdb99810eb5be9039
BLAKE2b-256 65799b9fa5acf43338ec281bd9f4e5467c6890a54d09e04e9b21427b463a1b67

See more details on using hashes here.

File details

Details for the file django_postges_lookups_any-0.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: django_postges_lookups_any-0.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1

File hashes

Hashes for django_postges_lookups_any-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 626df8a3d75deaf5f55d8f9cf3a33c2cd9c54207c7b2dca3f796045f73d15102
MD5 4329be8fe06dd0a99b7e03958e3d13b4
BLAKE2b-256 ec332df945358115eebee8a4c6208fb0f56c67b2327be2ffa410308c813462a5

See more details on using hashes here.

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