django mysql行锁定_python – Django事务锁定表

不幸的是,我需要uphte,添加和删除auth.models.User表中的行…

当我这样做表锁时,我无法对表执行任何SELECT查询.

我通过@ transaction.commit_manually围绕这些查询,这可能与表锁定有关.

交易如下所示:

for row in csv_reader:

update_sql = "UPDATE auth_user SET last_name = '%s' WHERE username = '%s'" %(row[2], row[0] )

cursor.execute(update_sql)

if not index % 100: print index:

print index

transaction.commit()

另外我正在使用Sql Server 2008,我想知道它是否是特定于Sql Server的,或者这样的操作也会锁定PostgreSQL和MySQL中的表.

有什么想法吗? 🙂

最佳答案 是的,你故意锁定表.我建议研究

transaction isolation因为它是数据库的核心概念之一.

至于你的问题,你可以为UPDATE和SELECT语句做几件事:

>对于数据库连接的其余部分,您可以将SET the transaction isolation level降低到更低的值.

>你也可以用other mechanisms做同样的事情.

>您可以尝试重新排列查询,以便首先读取基础数据,然后开始修改数据.这可能允许您锁定表但允许操作继续.

>您可以再次考虑哪些查询在事务处理中很重要.

>您还可以使用Locking Hints指导SQL Server.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值