Il 19/09/2015 11:29, flandero ha scritto:
2015-09-17 10:44 GMT+02:00 Stefano Bossi <ste.bo...@gmail.com
<mailto:ste.bo...@gmail.com>>:

    Qualcuno l'ha mai implementato?
    A parte l'implementazione di SQLAlchemy ne conoscete altre?
    Sapete per caso se Django non lo ha mai preso in considerazione?

Direi di no by design:
http://lucumr.pocoo.org/2011/7/19/sqlachemy-and-you/

Ciao,
forse ti riferisci a:

Forse ti riferisci a
https://docs.djangoproject.com/en/1.8/topics/db/transactions/, precisamente al
metodo 'atomic'

atomic(/using=None/, /savepoint=True/)[source]
<https://docs.djangoproject.com/en/1.8/_modules/django/db/transaction/#atomic>¶
<https://docs.djangoproject.com/en/1.8/topics/db/transactions/#django.db.transaction.atomic>

    Atomicity is the defining property of database transactions. atomic allows
    us to create a block of code within which the atomicity on the database is
    guaranteed. If the block of code is successfully completed, the changes are
    committed to the database. If there is an exception, the changes are rolled
    back.

Non credo sia quello che intenda, vedi http://martinfowler.com/eaaCatalog/unitOfWork.html Il punto credo sia business transaction vs database transaction, tenendo pure presente di gestire una business transactions che dura per più di una request.

Se dovessi farlo mi serializzerei le operazioni che vorrei fare su una cache e alla fine della fiera, deserializzo e faccio tutto in un blocco. Fare l'eventuale merge delle operazioni ridondanti lo vedo già più complicato. Poi c'è anche da pensare a come invalidare unit of work presenti in cache ma non completate. Molto probabilmente farei una cosa che, se funziona, funziona per miracolo.

Qua ci sono diversi possibili spunti:
http://stackoverflow.com/questions/6245498/django-orm-unit-of-work

--
Riccardo Magliocchetti
@rmistaken

http://menodizero.it
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a