Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pg-serializer

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pg-serializer

Fast serializers for Django using Postgres database

  • 0.1.3
  • PyPI
  • Socket score

Maintainers
1

pg_serializer: Very fast JSON serializer using Django and PostgreSQL

PyPI version Python Version Code style: black pipeline status coverage report

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_serializer is not designed to replace DRF serializers, only to speed up some endpoints when performance is becoming an issue
  • pg_serializer is 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

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc