Skip to main content

Apply constraints before inserting and updating TinyDB records.

Project description

tinydb-constraint

PyPI version shields.io PyPI license

Apply constraints before inserting and updating TinyDB records.

Installation

Method 1:

$ pip install tinydb-constraint

Method 2:

  • Clone the project from GitHub
  • Get poetry and poetry install tinydb-constraint --path PATH/TO/TINYDB/CONSTRAINT

Usage

>>> from tinydb import TinyDB
>>> from tinydb_constraint import ConstraintTable
>>> from datetime import datetime
>>> db = TinyDB('db.json')
>>> db.table_class = ConstraintTable
>>> db.set_schema({
...     'record_id': int,
...     'modified': datetime
... })
>>> db.schema
{
    'record_id': Constraint(type_=int, unique=False, not_null=False),
    'modified': Constraint(type_=datetime.datetime, unique=False, not_null=False)
}

If you want to enable TinyDB-constraint for all databases in a session, run:

>>> from tinydb import TinyDB
>>> from tinydb_constraint import ConstraintTable
>>> TinyDB.table_class = ConstraintTable

Note

I haven't modified the serialization yet, so datetime type will actually produce datetime.isoformat(), and to set datetime, you have to pass a dateutil.parser.parse()-parsable string.

Advanced usage

Database schema is also settable via Constraint object.

>>> from tinydb_constraint import Constraint
>>> db.set_schema({
...     'user_id': Constraint(type_=int, unique=True, not_null=True)
... })

If you want to disable certain string sanitization features, like stripping spaces or checking if string can be converted to datetime, this can be done by setting environmental variables.

TINYDB_SANITIZE=0
TINYDB_DATETIME=0

Plan

  • Add ForeignKey constraints.

Related projects

  • tinydb-viewer - View records generated from TinyDB and alike (e.g. list of dictionaries.)

Project details


Download files

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

Files for tinydb-constraint, version 0.1.3
Filename, size File type Python version Upload date Hashes
Filename, size tinydb_constraint-0.1.3-py2.py3-none-any.whl (14.2 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size tinydb-constraint-0.1.3.tar.gz (5.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page