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 Code issues

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

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.11.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

link.dbrequest-0.11-py2.py3-none-any.whl (21.4 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: link.dbrequest-0.11.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for link.dbrequest-0.11.tar.gz
Algorithm Hash digest
SHA256 8ed1051b99558aea1be1927d7c6d89a9e019aa8662e824cbb01e80af2bbb20f4
MD5 eb7b7c892e0381502f7778d7cf5210b8
BLAKE2b-256 2deccdfc2b97b70f3d4d779e0ec0304ebfa701afd1360f01e35c418d29d68f1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for link.dbrequest-0.11-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5b6cc795cf546f5e8e10823b18e16c7e090ff0625ba8f3474dcf9e48d1c5662e
MD5 2bacda48143f7fec3325bdf83c71d75f
BLAKE2b-256 3617628cb734547d2903bca11e64387393d479ed9a7eea73e43842df7a201172

See more details on using hashes here.

Supported by

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