Fast serializers for Django using Postgres database
pg_serializer: Very fast JSON serializer using Django and PostgreSQL
Django REST framework is a powerful and flexible toolkit for building Web APIs.
Django Rest Framework is a great framework for building REST APIs on top of Django and
it fits 99% of use cases.
However, JSON serialization is done in Python and it can be very slow for some
list endpoints that return a lot of records.
pg_serializer aims to soften this 1% issue by providing a way to do JSON serialization
inside your PostgreSQL database. Indeed, PostgreSQL has a built-in support for JSON
since version 9.2, and it is far more faster than Python's one.
pip install pg-serializer
pg_serializer features an automatic
ModelSerializer like DRF.
from django.contrib.auth.models import User import pg_serializer class UserSerializer(pg_serializer.ModelSerializer): class Meta: model = User fields = ( "id", "username", "email", "first_name", "last_name", "is_staff", "date_joined", ) json_str = UserSerializer(User.objects.all()).json
It also has preliminary support for ForeignKey relation using the Django
import pg_serializer class OrderSerializer(pg_serializer.ModelSerializer): buyer = pg_serializer.StringField(source="buyer__username") class Meta: model = Order fields = ( "transaction_id", "transaction_time", "buyer", "is_gift", "shipping_date", "additional_data", ) json_str = OrderSerializer(Order.objects.all()).json
Full examples are available inside
pg_serializeris not designed to replace DRF serializers, only to speed up some endpoints when performance is becoming an issue
pg_serializeris still in alpha development: bugs can occur and it doesn't support all Django fields and relations
- reinforce the test suite
- implement (and document) custom datetime and decimal formatting
- document how to create custom serializer fields
- full support for ArrayField and JSONField
- complex queryset operations (GROUP BY, ...) support
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size pg_serializer-0.1.3-py3-none-any.whl (8.3 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size pg_serializer-0.1.3.tar.gz (7.6 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for pg_serializer-0.1.3-py3-none-any.whl