1
geek123 2016-05-12 10:21:01 +08:00
|
2
iiduce 2016-05-12 10:59:48 +08:00
Django 真没什么可带的,官方文档写的太好太详细,看一遍,写个博客程序,就入门了。
剩下的的就是了解你需要的各种中间件、插件的使用,用哪个学哪个,基本都是看官方文档就可以了。 |
5
sudo987 OP @iiduce 请问 F()解决 race condition 是怎么个原理,官方教程说的是在 save 之前总会用的是数据库的值而不是本地取下来的值,看源码也没太看明白。
|
6
virusdefender 2016-05-12 12:16:39 +08:00 via Android
@sudo987 save 会更新所有字段,这时候数据库可能已经变了,看 https://virusdefender.net/index.php/archives/276/
|
7
sudo987 OP @virusdefender
UPDATE `account_user` SET `age` = (`account_user`.`age` - 100) WHERE `account_user`.`id` = 8000 问题在这儿, F 完成的是更新数据之前总会取数据库最新的值,但是如果在 account_user.user 获取之后数据库发生改变,那岂不是又发生 race condition 了么? |
8
neoblackcap 2016-05-12 13:20:45 +08:00 1
@sudo987 你看到是这样,但是底层的 InnoDB 引擎已经将你要修改的 row 隐式加了锁了,自然就解决了 data race 了
|
9
sudo987 OP @neoblackcap 给力!在哪里可以看见代码?
|
10
neoblackcap 2016-05-12 13:37:49 +08:00 1
@sudo987 你看 MySQL 的文档就知道了,而且 @virusdefender 的文章不是说了吗?是当你选中主键的时候才会是这样,而且要加事务。
我是不建议大家写这样的代码,要加锁的话就显式加上就好了,维护者会更加明确。毕竟这样的隐式加锁依赖于数据库的实现,不同数据库有不同的表现,不同存储引擎也有不同的表现。 |
11
sudo987 OP @neoblackcap 谢谢。
|
13
lyhapple 2016-05-12 16:25:12 +08:00
这世道,没票子,谁带你哦,哈哈,自学成材吧
|
14
wenbinwu 2016-05-12 16:29:10 +08:00
看源码,没那么难
|
15
qile1 2016-05-12 18:21:05 +08:00 via Android
qq 比较合适吧,微信发个文件,电脑操作太难, djanjo 是那个各种模块都弄好的,还是 flsk 有都现成,准备学 djaonj ,用 flsk 写个小程序,没错,先用 fksk 先 dns 更新,然后在用 djanjo 开发,一起开发个项目,有钱分可以不?我 QQ14 九零二一唔医二
|
17
zhaojames077 2016-05-12 18:41:29 +08:00
@qile1 这回复看醉了。。。
|
18
smallerpig 2016-05-12 21:20:23 +08:00
|
19
qile1 2016-05-12 21:21:48 +08:00 via Android
qq 比较合适吧,微信发个文件,电脑接收操作不方便,截图什么的我也没用过, django 是那个各种模块都弄好现成能用的,还是 flask 有都现成,准备学 django ,我 QQ14 九零二一唔医二
|
20
ayaseangle 2016-05-12 21:33:24 +08:00 via Android
酱狗
|