запись в бд и изменить внутри поле что я эту запись взял, чтобы другой тред не взял ее же. я это делаю через такой код:
r = db.session.query(ProxyEntity)\
.filter(
.filter(
.filter(
.filter(
.order_by().first()
r.field1 = r.field1 + 1
r.field2 = now_date_till_minute
db.session.commit()
return r.token
т.е. field1 и 2 отвечают за то чтобы другой тред в зпросе не получил данные. алхимия это выстроит транзакционно и все будет гуд, или есть шанс коллизии когда первый вытащит данные но еще не успеет апдейтнуть поля а второй уже начнет тянуть по ним?
все что происходит в рамках экземпляра сессии - происходит в одной транзакции
Обсуждают сегодня