使用 django 访问数据库的线程安全方法
Posted
技术标签:
【中文标题】使用 django 访问数据库的线程安全方法【英文标题】:Threadsafe way to access database using django 【发布时间】:2012-08-20 13:35:44 【问题描述】:据我所知,经验丰富的线程无法共享django
db 连接。
我搜索了一下,发现了两个解决这个问题的方法:
-
直接使用
SQL
连接,直接使用相关的DBMS驱动。
使用sqlalchmeny
及其会话轮询。
真的没有别的办法了吗?是不是可以让django
为线程创建新的连接(听起来很简单,对我有用!)
谢谢。
【问题讨论】:
【参考方案1】:数据库的线程安全问题与连接无关;当两个线程尝试同时更改同一条数据时,甚至一个线程尝试写入而另一个线程尝试读取。为了防止这种情况,您只需要在您的一个线程需要对其执行某些操作时锁定该表。使用 Django 1.4+ 的一种快速简便的方法是使用 select_for_update
,它会锁定表,直到您执行 update
操作。
【讨论】:
谢谢,当一些其他线程试图写入锁定表时会发生什么?有排队吗?以上是关于使用 django 访问数据库的线程安全方法的主要内容,如果未能解决你的问题,请参考以下文章