Accesso concorrente¶
In caso di utilizzo contemporaneo del db da parte di più utenti, l’ORM mette a disposizione una serie di strumenti atti a gestire l’accesso concorrente al record.
Il parametro for_update=True¶
In una qualsiasi Operazione di lettura è possibile richiedere la restituzione del record a scopo di successiva modifica semplicemente passando il parametro for_update=True
:
rec_trapano = tbl_prodotto.record(where='$codice=:cod_prod',
cod_prod='T1',
for_update=True).output('dict')
A questo punto sarà possibile modificare il rec_trapano come segue:
old_record = dict(rec_trapano)
rec_trapano['prezzo_unitario'] = rec_trapano['prezzo_unitario'] * 3
Ed effettuare update e commit come descritto al paragrafo precedente.
Suggerimento
Si noti che prima di effettuare la modifica facciamo una copia del record costruendone un dizionario (old_record). Questo passaggio non è obbligatorio ma è buona consuetudine per innescare determinati eventi di business logic, per esempio nei trigger
Metodi per la modifica di record¶
Per agevolare la modifica di un record è stato messo a disposizione il metodo recordToUpdate , mentre per la modifica di molti record in contemporanea, è possibile usare la funzione batchUpdate .
Autore della sezione: Davide Paci