Skip to main content

object mapper for datastore

Project description

# datastore.objects

[datastore.objects](https://github.com/datastore/datastore.objects) is a simple object mapper on top of [datastore](https://github.com/jbenet/datastore) (not relational). Thanks to datastore’s versatility, it makes it easy to (serialize and) persist custom classes to any sort of data storage service.

Notice: please familiarize yourself with datastore first.

## Install

pip install datastore.objects

## Interface

### Key

datastore.objects uses the default datastore.Key, making significant use of the type and instance fragments.

`python >>> from datastore.objects import Key, Model >>> class Scientist(Model): >>> pass >>> Scientist.key Key('/Scientist') >>> Scientist('Tesla').key Key('/Scientist:Tesla') `

### Model

datastore.objects provides a class that you inherit from to define your models. datastore.objects.Model handles the datastore serializing and deserializing, attribute validation, etc.

`python >>> from datastore.objects import Model >>> class Scientist(Model): >>> pass `

### Attribute

datastore.objects uses descriptor Attributes to track the properties you wish to store. This is heavily based on how other python ORMs (django, app engine) do it. In short, you define model attributes like this:

`python >>> from datastore.objects import Attribute, Model >>> class Scientist(Model): >>> name = Attribute(required=True) >>> field = Attribute(default='Physics') >>> tesla = Scientist('Tesla') >>> tesla.name = 'Nicola Tesla' >>> tesla.field 'Physics' >>> tesla.field = 'Electrical Engineering' >>> tesla.data {'name': 'Nicola Tesla', 'field': 'Electrical Engineering'} `

### ObjectDatastore

datastore.objects provides a ShimDatastore that wraps any other datastore. Thus you can use any of the various datastores to persist your objects. ObjectDatastore makes sure to serialize (on put) and deserialize (on get) data properly, and construct your classes.

`python >>> import datastore >>> from datastore.objects import Attribute, Model, ObjectDatastore >>> >>> class Scientist(Model): >>> name = Attribute(required=True) >>> field = Attribute(default='Physics') >>> >>> tesla = Scientist('Tesla') >>> tesla.name = 'Tesla' >>> tesla.field = 'Electrical Engineering' >>> >>> dds = datastore.DictDatastore() >>> ods = ObjectDatastore(dds, model=Scientist) >>> ods.put(tesla.key, tesla) >>> dds.get(tesla.key) {'name': 'Tesla', 'field': 'Electrical Engineering'} >>> ods.get(tesla.key) <Model /Scientist:Tesla> `

## About

#### Author

datastore.objects is written by [Juan Batiz-Benet](https://github.com/jbenet), of [Athena](http://athena.ai).

#### License

It is free open-source software, available under the MIT License.

#### Contact

Project webpage: https://github.com/datastore/datastore.objects. Issues: https://github.com/jbenet/object-datastore/issues

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

datastore.objects-0.2.2.tar.gz (35.9 kB view details)

Uploaded Source

File details

Details for the file datastore.objects-0.2.2.tar.gz.

File metadata

File hashes

Hashes for datastore.objects-0.2.2.tar.gz
Algorithm Hash digest
SHA256 418465156297f8afe0b2c56f427c9fc8168b9e239337a9bf928e9d199a9f1b6d
MD5 1f8cf9d2d6f71e2e0f164af5b25bff45
BLAKE2b-256 3ca420d30e609014d98c0a1ca0b2057531b2fd589926f7ab0081760f36a9f526

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