我有一个User
带有 field的 Django 模型balance
,并用它维护一个balance_last_updated
DateTimeField
。
为了免费更新余额竞争条件,我需要原子地读取然后balance_last_updated
在我的 Django 视图中设置。这样,任何更新余额的线程都会在不同的时间段内这样做(对吗?)。
如果您使用的是 Django 1.4,则可以使用select_for_update
来实现此目的。但前提是您的数据库后端支持事务。MyISAM 没有,所以如果原子性(或一般的 ACID)对您的项目很重要,我建议切换到 InnoDB 引擎或 PostgreSQL。