使用 Peewee 库批量更新

2024-02-16

我正在尝试使用更新表内的许多记录Peewee图书馆。里面一个for循环,我获取一条记录,然后更新它,但这在性能方面听起来很糟糕,所以我需要批量更新。当前代码如下所示:

usernames_to_update = get_target_usernames()
for username in usernames_to_update:
    user = User.get(User.username == username) # username is primary key
    if user.type == 'type_1':
        user.some_attr_1 = some_value_1
    elif user.type == 'type_2':
        user.some_attr_2 = some_value_2
    # elif ....
    user.save()

In the 文档 http://docs.peewee-orm.com/en/latest/, 有insert_many功能但没有什么类似的update_many。搜索周围我想出了这些解决方案:

  1. 使用执行原始查询CASE: Link https://stackoverflow.com/a/11664726/10109777
  2. Using replace_many: Link http://docs.peewee-orm.com/en/latest/peewee/api.html#Model.replace_many
  3. Using update : Link https://stackoverflow.com/a/41041164/10109777

但我找不到任何如何使用第二个或第三个解决方案的示例。有人可以澄清如何使用案例 2 和 3 吗?


新的最佳答案是使用bulk_update()找到方法here http://docs.peewee-orm.com/en/latest/peewee/api.html#Model.bulk_update:

with database.atomic():
    User.bulk_update(user_list, fields=['username'], batch_size=50)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Peewee 库批量更新 的相关文章

随机推荐

  • 核心 API 控制器捕获所有未知路线

    我有一个 Core 2 2 API 和一堆现有的控制器 我现在想做的是添加一个新的控制器 其行为类似于包罗万象的路线 但仅适用于该控制器 并且不干扰现有控制器的路线 在我现有的控制器中 我将路由定义为控制器属性 Route api cont
  • 使用 iText 签名时,Adobe Reader 报告“签名是使用“不可用”创建的。”

    我正在使用 iText 成功签署文档 但是 每当我在 Adob e Reader 中检查 高级签名属性 时 我都会看到 签名是使用 不可用 创建的 我的问题是 如何使用 iText 更新此信息 然后在 Adob e Reader 或任何其他
  • 用于自定义视图的 SwiftUI ViewModifier

    有没有办法创建一个修改器来更新 State private var在正在修改的视图中 我有一个自定义视图 它返回Text具有 动态 背景颜色或Circle具有 动态 前景色 struct ChildView View var theText
  • 使用 UIGestureRecognizer 旋转瓶子

    我现在使用此代码在按钮点击上旋转瓶子 IBAction func spinButton sender AnyObject let rotateView CABasicAnimation let randonAngle arc4random
  • Symfony 2 缓存清除问题

    最近 当我尝试清除缓存时 我的 Symfony 2 网站出现了问题 我在终端中输入以下命令 php app console cache clear env dev 并得到以下错误 ErrorException Warning rename
  • 功能未显示在统一按钮上

    我正在学习 Unity 和 C 我试图使用按钮来触发某些内容 但该功能未显示 这是代码 using System Collections using System Collections Generic using UnityEngine
  • C++ 的 64 位名称修改

    我有一些代码 其中包含以下行 pragma comment linker include test 12 当我使用 C Visual Studio 2010 和配置类型 32 位 我也在 32 位 Windows 机器上 编译代码时 使用此
  • 如何使用 WebMatrix 在 ASP.NET 网页中制作自定义错误页面?

    信不信由你 我试图通过简单的 Google 搜索来寻找这个问题的答案 但我没有找到任何东西 通过 Google 搜索 WebMatrix 自定义错误页面 WebMatrix 如何制作自定义服务器端错误页面 等 但也许我没有使用正确的术语进行
  • boost::asio 和套接字所有权

    我有两个类 谈判者 客户端 都有自己的 boost asio ip tcp socket 有没有办法在协商完成后将套接字对象传输给客户端 我期待着做这样的事情 boost asio ip tcp socket sock1 io boost
  • 如何将请求(python)cookie保存到文件中?

    如何使用图书馆requests 在Python中 请求之后 usr bin env python coding utf 8 import requests bot requests session bot get http google c
  • RcppArmadillo 伽马分布在具有相同种子的平台之间有所不同

    我正在研究一套 https github com osorensen BayesMallows 它使用来自 RcppArmadillo 的随机数 该软件包运行 MCMC 算法 为了获得精确的再现性 用户应该能够设置随机数种子 这样做时 看起
  • 如何让django使用电子邮件而不是用户名注册用户

    我正在尝试创建一个使用名字 姓氏 电子邮件和密码注册用户的网站 我尝试编写此表单并在视图中使用它 from django import forms from django contrib auth models import User fr
  • 在循环的括号内定义循环变量可以吗?

    我对 C 很陌生 但在 C 方面有很多经验 我的大学老师告诉我 在 纯 C 中 初始化循环变量是错误的 在循环括号内 他说是因为VS编译器才运行的 由于某些原因 演示文稿中的所有材料还显示了循环 其循环变量在括号之外声明 for int i
  • C# Selenium:单击 iframe 下的按钮

    我的网站下有一个 iframe 模式 我正在尝试单击按钮 但我无法这样做 下面是我的代码 请告诉我 我错过了什么 driver SwitchTo Frame driver FindElement By Id iframeid frame n
  • 如何从没有上下文的类中调用 getResources() ?

    在我的申请中 我有很多课程和活动 Droid 是一个没有上下文的类 Mygame 是一个扩展 SurfaceView 并实现 SurfaceHolder Callback 的类 我正在 mygame 类中创建一个 Droid 对象 并为其设
  • Android Spinner 上的多个 AsyncTasks 问题

    我收到一些错误 我知道问题是什么 但我不知道如何解决 我有4个旋转器 每个微调器都关联一个异步任务 简而言之 当我在 spinner1 上选择一项时 执行填充 spinner2 的第二个 asynctask 所选项目作为参数添加到第二个 a
  • C# 找不到网络路径

    我在通过网络将文件写入远程目录时遇到问题 当我尝试检查目录是否存在时 以下代码失败 if Directory Exists processingPath Directory CreateDirectory processingPath 处理
  • docker 在应该使用 v2 时却使用了 v1 注册表 api

    我正在尝试使用自托管 docker 注册表 v2 我应该能够推送 docker 映像 该映像在运行registry v2 容器的主机服务器 coreos 上本地工作 但是 在另一台机器 也是 coreos 相同版本 上 当我尝试推送到注册表
  • 使用 C# 中的静态类通过事件通知其他订阅者的简单状态机

    我一直在尝试为我的应用程序编写一个简单的静态类状态机 以便在系统状态更改时通知其他控件和代码 我想我几乎已经解决了 但我遇到了一个小问题 我不知道如何解决 这是代码 An enum denoting the 3 States public
  • 使用 Peewee 库批量更新

    我正在尝试使用更新表内的许多记录Peewee图书馆 里面一个for循环 我获取一条记录 然后更新它 但这在性能方面听起来很糟糕 所以我需要批量更新 当前代码如下所示 usernames to update get target userna