Peewee integration with the Marshmallow (de)serialization library.
Project description
Marshmallow-Peewee
Marshmallow-Peewee -- Peewee ORM integration with the Marshmallow (de)serialization library.
Requirements
- python >= 3.7
Installation
marshmallow-peewee should be installed using pip:
$ pip install marshmallow-peewee
Quickstart
import peewee as pw class Role(pw.Model): name = pw.CharField(255, default='user') class User(pw.Model): created = pw.DateTimeField(default=dt.datetime.now()) name = pw.CharField(255) title = pw.CharField(127, null=True) active = pw.BooleanField(default=True) rating = pw.IntegerField(default=0) role = pw.ForeignKeyField(Role) from marshmallow_peewee import ModelSchema class UserSchema(ModelSchema): class Meta: model = User role = Role.create() user = User.create(name='Mike', role=role) result = UserSchema().dump(user) print(result) # {'active': True, # 'created': '2016-03-29T15:27:18.600034+00:00', # 'id': 1, # 'name': 'Mike', # 'rating': 0, # 'role': 1, # 'title': None} result = UserSchema().load(result) assert isinstance(result, User) assert result.name == 'Mike' from marshmallow_peewee import Related class UserSchema(ModelSchema): role = Related() class Meta: model = User result = UserSchema().dump(user) print(result) # {'active': True, # 'created': '2016-03-29T15:30:32.767483+00:00', # 'id': 1, # 'name': 'Mike', # 'rating': 0, # 'role': {'id': 5, 'name': 'user'}, # 'title': None} result = UserSchema().load(result) assert isinstance(result, User) assert isinstance(result.role, Role)
Usage
import peewee as pw class Role(pw.Model): name = pw.CharField(255, default='user') class User(pw.Model): created = pw.DateTimeField(default=dt.datetime.now()) name = pw.CharField(255) title = pw.CharField(127, null=True) active = pw.BooleanField(default=True) rating = pw.IntegerField(default=0) role = pw.ForeignKeyField(Role) from marshmallow_peewee import ModelSchema class UserSchema(ModelSchema): class Meta: # model: Bind peewee.Model to the Schema model = User # model_converter: Use custom model_converter # model_converter = marshmallow_peewee.ModelConverter # dump_only_pk: Primary key is dump only # dump_only_pk = True # string_keys: Convert keys to strings # string_keys = True
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/marshmallow-peewee/issues
Contributing
Development of the project happens at: https://github.com/klen/marshmallow-peewee
License
Licensed under a MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for Marshmallow_Peewee-3.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18ce67eece9a5fc89e535742ffbff85772f85d33b4563ccdad516ace58968fcb |
|
MD5 | b1b5205b676f98cc31529f8d6e6c1aa3 |
|
BLAKE2-256 | a84516922c460277d05f5a0a6fb9c6a4b27c1b40d5594bb03b0b5cc1513b9c23 |