Awesome Python Models
A curated list of awesome Python libraries, which implement models, schemas, serializers/deserializers, ODM's/ORM's, Active Records or similar patterns.
Model, Schema
Libraries implementing some kind of model, letting you to serialize/deserialize python object to some data structures.
- 👻 ascetic - Ascetic, a lightweight Python datamapper ORM.
- attrs - Python Classes Without Boilerplate.
- booby - data modeling and validation Python library.
- causalmodels - causal modeling in Python.
- colander - A serialization/deserialization/validation library for strings, mappings and lists.
- composite - Declarative XML files parse, unparse with help of lxml library.
- datastore.objects - simple object mapper on top of datastore (not relational).
- dirty-models - Dirty model for python.
- dejavu - Dejavu is a thread-safe Object-Relational Mapper for Python applications.
- gnarl - Lightweight module to define serializable, schema-validated classes
- guts - Lightweight declarative YAML and XML data binding for Python.
- jsonmapper - Python JSON<->Object mapper.
- jsonmodels - jsonmodels is library to make it easier for you to deal with structures that are converted to, or read from JSON.
- jsonobjects - jsonobjects allows you to declaratively specify how to extract and convert elements from a JSON document.
- jsonobject - A simple json-object mapping for Python.
- 👻 jsonpickle - Python library for serializing any arbitrary object graph into JSON.
- kim - A JSON Serialization and Marshaling framework.
- lazycontract - Python library to define declarative contracts for serialization and deserialization.
- lupin - Python document object mapper (load python object from JSON and vice-versa).
- marshmallow - A lightweight library for converting complex objects to and from simple Python datatypes.
- 👻 metaparams - Python meta framework for Parameters in classes.
- micromodels - Declarative dictionary-based model classes for Python.
- monk - An unobtrusive data modeling, manipulation and validation library.
- normalize - A toolkit for wrapping network data in Python objects.
- model-api - For modeling remote APIs in an ORM fashion.
- object-mapper - ObjectMapper is a class for automatic object mapping in Python.
- param - Make your Python code clearer and more reliable by declaring Parameters.
- 👻 prettyrecord - Structures like SQLAlchemy's declarative_base or Django's models in your project!
- pydantic - Data validation using Python 3.6 type hinting.
- pyschema - Python library for class-based schema definition, object serialization and data validation.
- python-json - Python library for easily JSON encoding/decoding complex class-based Python models, using an arbitrarily complex (but easy to write!) mapping schema.
- python-docar - A library for document oriented architectures.
- resource-api - A framework that allows developers decoratively define resources and relationships between them.
- schematics - Python Data Structures for Humans™.
- schema - A generic declarative schema system.
- scheme - A declarative schema framework for Python.
- simple-models - Simple models - keep your API messages in shape with validation and handy descriptors based object interface.
- simple_model - a very simple model framework for python.
- yorm - Automatic object-YAML mapping for Python.
ODM, ORM, Active Record
Libraries, implementing ODM/ORM/Active Record patterns, letting you to work with external objects (REST, DB) like normal python instances.
- acid - SQLite for NoSQL.
- 👻 butterdb - butterdb is a Python object mapper for Google Drive Spreadsheets.
- django - The Web framework for perfectionists with deadlines (includes ORM layer).
- finch - Asynchronous RESTful API consumer for Python.
- flywheel - Object mapper for Amazon's DynamoDB.
- kev - Python ORM for key-value stores. Currently supported backends are Redis, S3, and a S3/Redis hybrid backend.
- modular-odm - A database-agnostic Object-Document Mapper for Python.
- mongoengine - A Python Object-Document-Mapper for working with MongoDB.
- orator - The Orator ORM provides a simple yet beautiful ActiveRecord implementation.
- pony - Pony Object Relational Mapper.
- peewee - a small, expressive orm -- supports postgresql, mysql and sqlite.
- py-rest-orm - Generic Python REST ORM. Inspired by Django. Powered by Requests.
- python-rest-model - A standard way to consume a RESTful service, inspired by Django models.
- pyresto - A generic ORM framework for RESTful APIs.
- pymodm - A Pythonic, object-oriented interface for working with MongoDB.
- PynamoDB - A pythonic interface to Amazon's DynamoDB.
- redisco - A Python Library for Simple Models and Containers Persisted in Redis.
- remodel - Very simple yet powerful and extensible Object Document Mapper for RethinkDB, written in Python.
- restorm - RestORM allows you to interact with resources as if they were objects.
- 👻 storm - Storm is an object-relational mapper (ORM) for Python developed at Canonical.
- 👻 sqlobject - SQLObject is a popular Object Relational Manager for providing an object interface to your database, with tables as classes, rows as instances, and columns as attributes.
- wukong - An ORM Client library for SolrCloud.
- yadm - Yet Another Document Mapper (ODM) for MongoDB.
- walrus - Lightweight Python utilities for working with Redis.
Data validation
Libraries for validating custom data structures.
- cerberus - Lightweight, extensible data validation library for Python.
- destructure - Easy declarative schema validation with optional name-binding.
- jsonschema - jsonschema is an implementation of JSON Schema for Python (supporting 2.7+ including Python 3).
- pyschemes - PySchemes is a library for validating data structures in Python.
- pyvaru - Rule based data validation library for python 3.
- required - Required is a simple library which allows you to validate dependencies across multiple fields.
- schema - schema is a library for validating Python data structures, such as those obtained from config-files, forms, external services or command-line parsing, converted from JSON/YAML (or something else) to Python data-types.
- strictyaml - Type-safe YAML parser and validator.
- valideer - Lightweight data validation and adaptation Python library.
- validr - A simple, fast, extensible python library for data validation.
- voluptuous - Voluptuous, despite the name, is a Python data validation library. It is primarily intended for validating data coming into Python as JSON, YAML, etc.
Other resources
- fullstackpython: Object-relational mappers (ORMs)
- Python ORM/ODM Examples, For The Sleepy
- martinfowler: Active Record
- martinfowler: Data Mapper
- wiki: Object-relational mapping
- Higher Level Database Programming
Other Awesome Lists
List of lists.
- Monty
- Python
Contributing
If you know some project/library that is not listed here, just let me know! Or even better, create a pull request.