首页 > 其他分享 >6-4|原子性更新

6-4|原子性更新

时间:2023-06-04 12:02:30浏览次数:29  
标签:Stat url Tweet update 更新 原子 query

Peewee可以让你使用原子性更新。比如我们需要更新一些计数器。直接的方法是:

>>> for stat in Stat.select().where(Stat.url == request.url):
...     stat.counter += 1
...     stat.save()

不要这样做!不仅速度很慢,而且容易冲突如果多进程同时在更新这个计数器时。

应该用update方法原子性的更新计数器

>>> query = Stat.update(counter=Stat.counter + 1).where(Stat.url == request.url)
>>> query.execute()

可以尽可能复杂的查询语句。我们将我们雇员的奖金修改为旧奖金加上工资的1成:

>>> query = Employee.update(bonus=(Employee.bonus + (Employee.salary * .1)))
>>> query.execute()  # Give everyone a bonus!

我们可以使用子查询去更新某列的值。假如我们有一个存储User模型某个user tweets数量的字段,我们想要阶段性的更新它的值:

>>> subquery = Tweet.select(fn.COUNT(Tweet.id)).where(Tweet.user == User.id)
>>> update = User.update(num_tweets=subquery)
>>> update.execute()

标签:Stat,url,Tweet,update,更新,原子,query
From: https://blog.51cto.com/wusen/6410330

相关文章

  • 第十届蓝桥杯c++b组国赛题解(还在持续更新中...)
    试题A:平方序列解题思路:直接枚举一遍x的取值,然后按照题目给定的式子算出y,每次取x+y的最小值即可答案为7020代码实现:#include<iostream>#include<algorithm>#include<cmath>usingnamespacestd;#defineintlonglongconstintN=1e4+5;signedmain(){ //记录答案......
  • mybatis批量更新和踩坑总结
    1.mybatis批量更新示例:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.cars.ic......
  • 6-3|Python更新已有的记录
    >>>user.save() #save()returnsthenumberofrowsmodified.>>>user.id>>>user.save()>>>user.id>>>huey.save()>>>huey.id如果你更新多个记录,使用UPDATE插询。下列例子将更新Tweet多个满足如果是昨天之前发表的实例,将它们标示为已发表,Model.upda......
  • deepin系统更新谷歌浏览器chrome的方法
    deepin系统更新谷歌浏览器chrome的方法1为什么要更新谷歌浏览器谷歌浏览器更新频繁,隔一段时间不更新,打开浏览器时会自动弹出一个提示更新的窗口,有点烦,如果使用python自动处理程序时,如webbrowser.open('http://×.html')语句,不能正确执行。目前,deepin系统谷歌浏览器在国内不能点......
  • 树状数组详解——本质上就是空间换时间,可以解决大部分基于区间上的更新以及求和问题
     943.区间和查询-Immutable 中文 English 给一个整数数组nums,求出下标从i到j的元素和(i≤j),i跟j对应的元素也包括在内。 样例样例1输入:nums=[-2,0,3,-5,2,-1]sumRange(0,2)sumRange(2,5)sumRange(0,5)输出:1-1-3解释:sumRange(0,2)->(-2......
  • Java的可见性和原子性
    1.工作内存和主内存2.可见性和共享变量3.约束4.共享变量可见性的原理4.1可见性的步骤4.2保证可见性的必要条件synchronized实现可见性5.1synchronized实现的内容5.2JMM关于synchronized的规定5.3synchronized互斥代码的过程6volatile实现可见性6.1重排序6.2asifseri......
  • 利用jira及confluence的API进行批量操作(查找/更新/导出/备份/删除等)
    前言:近期因为某些原因需要批量替换掉jira和confluence中的特定关键字,而且在替换前还希望进行备份(以便后续恢复)和导出(方便查看)atlassian官方的api介绍文档太简陋,很多传参都没有进一步的描述说明,过程中踩了不少的坑...故现将相关代码分享下,希望有类似需求的朋友能用得上,直接上代......
  • es 批量更新 _update_by_query
        {"script":{"source":"ctx._source['owner']=1610"},"query":{"term":{"categoryCId":{"value":807}}}} {"script":{"source":"ctx._source......
  • 【Java】工具类 -- 持续更新
    Java原生工具类ObjectsrequireNotNull():为空抛异常,不为空返回本身deepEquals():对象深度相等(数组层面)判断调用Arrays.deepEquals0()适用于任意深度值得一提的是,java的集合类都覆写了equals()方法,对应元素equals()均为true时返回trueArraysasList():将参数作为数组元素,返......
  • Python网页开发神器fac 0.2.9、fuc 0.1.29新版本更新内容介绍
    fac项目地址:https://github.com/CNFeffery/feffery-antd-componentsfuc项目地址:https://github.com/CNFeffery/feffery-utils-components欢迎star支持⭐大家好我是费老师,由我开源维护的Python网页开发相关组件库fac和fuc分别更新到了0.2.9版本和0.1.29版本,本文就将为大家......