Skip to main content

Database agnostic query system

Project description

link.dbrequest is a database agnostic query system.

See documentation for more informations.

License Development Status Latest release Supported Python versions Supported Python implementations Download format Build status Code test coverage Downloads Code Health

Installation

pip install link.dbrequest

Features

  • database agnostic

  • lazy query resolving

  • cached queries

  • queries are unique

Examples

Getting a backend:

from link.middleware.core import Middleware

# Will open a QueryManager using a MongoDB backend
manager = Middleware.get_middleware_by_uri('query+mongo://localhost:27107/mydatabase/mycollection')
# Will open a QueryManager using a SQL backend
manager = Middleware.get_middleware_by_uri('query+sql://localhost:5432/mydatabase/mytable')

Operations on the backend:

from link.dbrequest.expression import E, F
from link.dbrequest.assignment import A
from link.dbrequest.comparison import C


query = manager.all()  # get an iterable over all elements

manager.create(A('foo', 'bar'))  # put document {'foo': 'bar'} into database

doc = manager.get(C('foo') != 'bar')  # get single element, or None

Operations on queries:

docs = list(query)  # iterate over query to execute the request
docs = list(query)  # use cache when iterating again

# create a new query from the first one
q2 = query.filter(C('foo') == 'bar')
assert query is not q2

# exclude documents without a field named "bar"
q3 = q2.exclude(~C('bar'))

# filter documents "weight > 5" and "prop1 < prop2 * 5"
q4 = q3.filter((C('weight') > 5) & (C('prop1') < (E('prop2') * 5)))

# set "prop3 = prop1 + prop2" on q2 result
docs = q2.update(A('prop3', E('prop1') + E('prop2')))

# delete documents
q3.delete()

Operations on documents:

# save/delete a single document
doc.save()
doc.delete()

Donating

Support via Liberapay

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

link.dbrequest-0.19.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

link.dbrequest-0.19-py2.py3-none-any.whl (29.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file link.dbrequest-0.19.tar.gz.

File metadata

File hashes

Hashes for link.dbrequest-0.19.tar.gz
Algorithm Hash digest
SHA256 313aae6c0b95d406b8e6b857c2b175f5a707e242db34689bbdff9485fcccc653
MD5 3bc31bbe22191cdc44f3e8884df96620
BLAKE2b-256 1eb57fa6c92b4c18187d97c7ae4a73dac387fc1913519464c510edae6dee7245

See more details on using hashes here.

File details

Details for the file link.dbrequest-0.19-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for link.dbrequest-0.19-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 472d2b1f2835ce01210ccd5d8332867774c69de58587a751f4701a2f7a941e94
MD5 0a66513df551e13a6cf159522d512191
BLAKE2b-256 8ff386cb63ed921c4efcb039b3c7d66eaca2622f5aef9532d9a94c026c26bf4a

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