Fast serializers for Django using Postgres database
Project description
pg_serializer: Very fast JSON serializer using Django and PostgreSQL
Overview
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.
Installation
pip install pg-serializer
Basic usage
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 __ separator.
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 tests/models.py and tests/serializers.py.
Disclaimer ⚠️
pg_serializeris not designed to replace DRF serializers, only to speed up some endpoints when performance is becoming an issuepg_serializeris still in alpha development: bugs can occur and it doesn't support all Django fields and relations
Roadmap
- 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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pg_serializer-0.1.3.tar.gz.
File metadata
- Download URL: pg_serializer-0.1.3.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.3 CPython/3.9.0 Darwin/19.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c8e7ce593755ac73e221d2b3cee9982beefed06fc7416761eb85e9e094a540c
|
|
| MD5 |
b6132f516ec663881175aee9916b9385
|
|
| BLAKE2b-256 |
6674eb0ba0266c07681f9a1058090995e4455800cf6b30ba0d22d64975346117
|
File details
Details for the file pg_serializer-0.1.3-py3-none-any.whl.
File metadata
- Download URL: pg_serializer-0.1.3-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.3 CPython/3.9.0 Darwin/19.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8d255956918fb763a50d50863af2a06129109a56a29c86854d1c1a07b987754
|
|
| MD5 |
da8022a7f2fcd52293da943055a774c9
|
|
| BLAKE2b-256 |
bac8f7bd786c6682fa510cd27faafb1e71b7a6ecb4f0513605f2380f21c9e8cd
|