You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
6.0 KiB
170 lines
6.0 KiB
Metadata-Version: 2.1 |
|
Name: tinydb |
|
Version: 4.8.0 |
|
Summary: TinyDB is a tiny, document oriented database optimized for your happiness :) |
|
Home-page: https://github.com/msiemens/tinydb |
|
License: MIT |
|
Keywords: database,nosql |
|
Author: Markus Siemens |
|
Author-email: markus@m-siemens.de |
|
Requires-Python: >=3.7,<4.0 |
|
Classifier: Development Status :: 5 - Production/Stable |
|
Classifier: Intended Audience :: Developers |
|
Classifier: Intended Audience :: System Administrators |
|
Classifier: License :: OSI Approved :: MIT License |
|
Classifier: Operating System :: OS Independent |
|
Classifier: Programming Language :: Python :: 3 |
|
Classifier: Programming Language :: Python :: 3.7 |
|
Classifier: Programming Language :: Python :: 3.8 |
|
Classifier: Programming Language :: Python :: 3.9 |
|
Classifier: Programming Language :: Python :: 3.10 |
|
Classifier: Programming Language :: Python :: 3.11 |
|
Classifier: Programming Language :: Python :: Implementation :: CPython |
|
Classifier: Programming Language :: Python :: Implementation :: PyPy |
|
Classifier: Topic :: Database |
|
Classifier: Topic :: Database :: Database Engines/Servers |
|
Classifier: Topic :: Utilities |
|
Classifier: Typing :: Typed |
|
Requires-Dist: typing-extensions (>=3.10.0,<5.0.0) ; python_full_version <= "3.7.0" |
|
Project-URL: Changelog, https://tinydb.readthedocs.io/en/latest/changelog.html |
|
Project-URL: Documentation, https://tinydb.readthedocs.org/ |
|
Project-URL: Issues, https://github.com/msiemens/tinydb/issues |
|
Description-Content-Type: text/x-rst |
|
|
|
.. image:: https://raw.githubusercontent.com/msiemens/tinydb/master/artwork/logo.png |
|
:scale: 100% |
|
:height: 150px |
|
|
|
|Build Status| |Coverage| |Version| |
|
|
|
Quick Links |
|
*********** |
|
|
|
- `Example Code`_ |
|
- `Supported Python Versions`_ |
|
- `Documentation <http://tinydb.readthedocs.org/>`_ |
|
- `Changelog <https://tinydb.readthedocs.io/en/latest/changelog.html>`_ |
|
- `Extensions <https://tinydb.readthedocs.io/en/latest/extensions.html>`_ |
|
- `Contributing`_ |
|
|
|
Introduction |
|
************ |
|
|
|
TinyDB is a lightweight document oriented database optimized for your happiness :) |
|
It's written in pure Python and has no external dependencies. The target are |
|
small apps that would be blown away by a SQL-DB or an external database server. |
|
|
|
TinyDB is: |
|
|
|
- **tiny:** The current source code has 1800 lines of code (with about 40% |
|
documentation) and 1600 lines tests. |
|
|
|
- **document oriented:** Like MongoDB_, you can store any document |
|
(represented as ``dict``) in TinyDB. |
|
|
|
- **optimized for your happiness:** TinyDB is designed to be simple and |
|
fun to use by providing a simple and clean API. |
|
|
|
- **written in pure Python:** TinyDB neither needs an external server (as |
|
e.g. `PyMongo <https://api.mongodb.org/python/current/>`_) nor any dependencies |
|
from PyPI. |
|
|
|
- **works on Python 3.7+ and PyPy3:** TinyDB works on all modern versions of Python |
|
and PyPy. |
|
|
|
- **powerfully extensible:** You can easily extend TinyDB by writing new |
|
storages or modify the behaviour of storages with Middlewares. |
|
|
|
- **100% test coverage:** No explanation needed. |
|
|
|
To dive straight into all the details, head over to the `TinyDB docs |
|
<https://tinydb.readthedocs.io/>`_. You can also discuss everything related |
|
to TinyDB like general development, extensions or showcase your TinyDB-based |
|
projects on the `discussion forum <http://forum.m-siemens.de/.>`_. |
|
|
|
Supported Python Versions |
|
************************* |
|
|
|
TinyDB has been tested with Python 3.7 - 3.11 and PyPy3. |
|
|
|
Example Code |
|
************ |
|
|
|
.. code-block:: python |
|
|
|
>>> from tinydb import TinyDB, Query |
|
>>> db = TinyDB('/path/to/db.json') |
|
>>> db.insert({'int': 1, 'char': 'a'}) |
|
>>> db.insert({'int': 1, 'char': 'b'}) |
|
|
|
Query Language |
|
============== |
|
|
|
.. code-block:: python |
|
|
|
>>> User = Query() |
|
>>> # Search for a field value |
|
>>> db.search(User.name == 'John') |
|
[{'name': 'John', 'age': 22}, {'name': 'John', 'age': 37}] |
|
|
|
>>> # Combine two queries with logical and |
|
>>> db.search((User.name == 'John') & (User.age <= 30)) |
|
[{'name': 'John', 'age': 22}] |
|
|
|
>>> # Combine two queries with logical or |
|
>>> db.search((User.name == 'John') | (User.name == 'Bob')) |
|
[{'name': 'John', 'age': 22}, {'name': 'John', 'age': 37}, {'name': 'Bob', 'age': 42}] |
|
|
|
>>> # Apply transformation to field with `map` |
|
>>> db.search((User.age.map(lambda x: x + x) == 44)) |
|
>>> [{'name': 'John', 'age': 22}] |
|
|
|
>>> # More possible comparisons: != < > <= >= |
|
>>> # More possible checks: where(...).matches(regex), where(...).test(your_test_func) |
|
|
|
Tables |
|
====== |
|
|
|
.. code-block:: python |
|
|
|
>>> table = db.table('name') |
|
>>> table.insert({'value': True}) |
|
>>> table.all() |
|
[{'value': True}] |
|
|
|
Using Middlewares |
|
================= |
|
|
|
.. code-block:: python |
|
|
|
>>> from tinydb.storages import JSONStorage |
|
>>> from tinydb.middlewares import CachingMiddleware |
|
>>> db = TinyDB('/path/to/db.json', storage=CachingMiddleware(JSONStorage)) |
|
|
|
|
|
Contributing |
|
************ |
|
|
|
Whether reporting bugs, discussing improvements and new ideas or writing |
|
extensions: Contributions to TinyDB are welcome! Here's how to get started: |
|
|
|
1. Check for open issues or open a fresh issue to start a discussion around |
|
a feature idea or a bug |
|
2. Fork `the repository <https://github.com/msiemens/tinydb/>`_ on Github, |
|
create a new branch off the `master` branch and start making your changes |
|
(known as `GitHub Flow <https://guides.github.com/introduction/flow/index.html>`_) |
|
3. Write a test which shows that the bug was fixed or that the feature works |
|
as expected |
|
4. Send a pull request and bug the maintainer until it gets merged and |
|
published ☺ |
|
|
|
.. |Build Status| image:: https://img.shields.io/azure-devops/build/msiemens/3e5baa75-12ec-43ac-9728-89823ee8c7e2/2.svg?style=flat-square |
|
:target: https://dev.azure.com/msiemens/github/_build?definitionId=2 |
|
.. |Coverage| image:: http://img.shields.io/coveralls/msiemens/tinydb.svg?style=flat-square |
|
:target: https://coveralls.io/r/msiemens/tinydb |
|
.. |Version| image:: http://img.shields.io/pypi/v/tinydb.svg?style=flat-square |
|
:target: https://pypi.python.org/pypi/tinydb/ |
|
.. _Buzhug: http://buzhug.sourceforge.net/ |
|
.. _CodernityDB: https://github.com/perchouli/codernitydb |
|
.. _MongoDB: http://mongodb.org/ |
|
|
|
|