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

Donating

Support via Gratipay

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

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

link.dbrequest-0.18-py2.py3-none-any.whl (29.2 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

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

File hashes

Hashes for link.dbrequest-0.18.tar.gz
Algorithm Hash digest
SHA256 cbb7e2c8e5dc9787e8aef89f490604f0271a96dd651bba06a1b502fae6d891f5
MD5 2ed4b826f8e20707b9951b75900fe20b
BLAKE2b-256 19850db7a24876d4fa3c89fea3b7814ee568157098394ed8996967fb97d2996b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for link.dbrequest-0.18-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b43d85830c3840e0404b6a2fc58be4df17df3f4977c5e4f5abf39ea854600559
MD5 0c603dd47b04a23086b961b58be3a73f
BLAKE2b-256 4b98da4aa937a6478505e7a0d284073c80746882896b7fcd9594cfd0dee08b3f

See more details on using hashes here.

Supported by

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