当前位置: 首页 > 面试题库 >

使用WHERE在SQLAlchemy Core中进行批量更新

董联
2023-03-14
问题内容

我已经设法在SQLAlchemy中使用批量插入,例如:

conn.execute(addresses.insert(), [ 
   {'user_id': 1, 'email_address' : 'jack@yahoo.com'},
   {'user_id': 1, 'email_address' : 'jack@msn.com'},
   {'user_id': 2, 'email_address' : 'www@www.org'},
   {'user_id': 2, 'email_address' : 'wendy@aol.com'},
])

我现在需要的是等效的更新。我已经试过了:

conn.execute(addresses.insert(), [ 
   {'user_id': 1, 'email_address' : 'jack@yahoo.com', 'id':12},
   {'user_id': 1, 'email_address' : 'jack@msn.com', 'id':13},
   {'user_id': 2, 'email_address' : 'www@www.org', 'id':14},
   {'user_id': 2, 'email_address' : 'wendy@aol.com', 'id':15},
])

期望每一行都根据“ id”字段进行更新,但是它不起作用。我以为是因为我没有指定WHERE子句,但是我不知道如何使用字典中包含的数据指定WHERE子句。

有人可以帮我吗?


问题答案:

阅读文档的“插入,更新和删除”部分。以下代码将帮助您入门:

from sqlalchemy.sql.expression import bindparam
stmt = addresses.update().\
    where(addresses.c.id == bindparam('_id')).\
    values({
        'user_id': bindparam('user_id'),
        'email_address': bindparam('email_address'),
    })

conn.execute(stmt, [
    {'user_id': 1, 'email_address' : 'jack@yahoo.com', '_id':1},
    {'user_id': 1, 'email_address' : 'jack@msn.com', '_id':2},
    {'user_id': 2, 'email_address' : 'www@www.org', '_id':3},
    {'user_id': 2, 'email_address' : 'wendy@aol.com', '_id':4},
])


 类似资料:
  • 问题内容: 如何批量更新mysql数据?如何定义这样的事情: 具有一些值,例如: 和其他值: 也许用mysql是不可能的?一个PHP脚本? 问题答案: 在这种情况下,最简单的解决方案是使用构造。它的工作速度非常快,并且可以轻松完成工作。 或使用建筑

  • 问题内容: 是否可以在露天使用CMIS进行批量更新。 我有不同的文档类型,并且每个文档类型在露天仓库中都有多个文档。 现在,我的要求是,如果我将更新任何文档的任何单个属性,则它应与相同类型的所有文档一起反映。 我可以使用CMIS吗? 如果是,请提供步骤和示例代码。 提前致谢 问题答案: 困难的方法(和健谈的方法)是查询您的文档,然后在每个文档上设置属性。但是CMIS规范实际上提供了一种更好的方法:

  • 我想用Django更新一个表-类似这样的原始SQL: 我的第一个结果是这样的——但这很恶心,不是吗? 有没有更优雅的方式?

  • 问题内容: 我正在使用Cloud Firestore,并且有一系列文档。对于集合中的每个文档,我想更新一个字段。 使用事务执行更新将效率低下,因为在更新数据时不需要读取任何数据。 批处理更新似乎是正确的方向,但是文档中没有包含一次更新多个文档的示例。参见此处:批量写入 问题答案: 如果您使用过Firebase数据库,则不可能原子地完全写入单个单独的位置,这就是为什么您必须使用批量写入的原因,这意味

  • 我想使用Spring的HibernateTemplate(Hibernate 5.1)执行数据库批量更新。 HibernateTemplate提供以下接口:。 我的查询是更新实体项集合项。属性id=?其中项目。id in( 。 我遇到了很多麻烦,想问一下使用HibernateTemplate的正确方法是什么 上述查询导致弃用警告HQ第1行第172列附近出现位置参数 将上述查询替换为JPA样式的参数

  • 我有如下elasticsearch文档,其中我需要根据creationtime currentdate更正年龄值 年龄=创建时间-当前日期 : 我想根据每个文档ID进行批量更新,但问题是我需要更正6个月的数据 有没有一种方法可以做到这一点,而不是循环遍历,我遇到的所有使用Pandas数据帧进行更新的示例都是基于已知值的。但是在这里_id我将在代码运行时得到。 我写的逻辑是获取所有文档 谁能给我一些