Django ORM manager for Postgresql Came from Rock@luojilab
Replace update_or_create
Without transaction, when using update_or_create
may raise IntegrityError
Because thread 1 execute update affect 0 row
and at the same time, thread 2 insert it
then thread 1 do insert will trigger UniqueKey conflict.
This method will use INSERT ON CONFLICT
feature to fix this.
- Python >= 2.6 (tested on 2.7 and 3.6)
- Django >= 1.7
- PostgreSQL >= 9.5
Running following command:
$ python setup.py install
Or using pip:
$ pip install -U django-postgres-ioc
Python code:
from django.db import models from ioc import IOCManager class Test(models.Model): code = models.CharField(max_length=50, unique=True)) name = models.CharField(max_length=100 objects = IOCManager() Test.objects.create_or_update( conflict="code", code="luojilab", defaults={ "name": "LuojiLab", }, )