CREATE TABLE foo (
name text NOT NULL,
deleted_at timestamp without time zone
);
CREATE TABLE bar (
name text NOT NULL,
status_id int
);
UPDATE bar set status_id=1
FROM foo
WHERE status_id <> 1 AND foo.name = bar.name AND foo.deleted_at is null;
当我尝试使用ORM执行此操作时,我最终遇到此错误
InvalidRequestError: Can't call Query.update() or Query.delete() when join(), outerjoin(), select_from(), or from_self() has been called
我想使用ORM,以便在更新命令完成之前使用更改来更新会话。
使用ORM发行多表更新的方法如下:
session.query(Bar).\
filter(Bar.status_id != 1,
Bar.name == Foo.name,
Foo.deleted_at.is_(None)).\
update({Bar.status_id: 1}, synchronize_session=False)
Query
API
文档中的脚注,用于指向Core多表更新文档的更新链接:
update()
通过在WHERE子句中指定多个表,SQLAlchemy构造隐式支持这两种模式
它也扩展到了ORM Query API,这并不奇怪,因为ORM是建立在Core之上的。结果查询为:
UPDATE bar SET status_id=%(status_id)s
FROM foo
WHERE bar.status_id != %(status_id_1)s
AND bar.name = foo.name
AND foo.deleted_at IS NULL
从您的错误中我怀疑您有一些类似的东西
session.query(Bar).select_from(Foo)...update(...)
由于错误状态而被接受。您必须在WHERE子句中(例如filter()
在查询API中)隐式传递FROM表。
达到
我想使用ORM,以便在更新命令完成之前使用更改来更新会话。
您必须将相应地更改synchronize_session
为'fetch'
或'evaluate'
。
问题内容: 如何使用Python文字将整数表示为二进制数? 我很容易找到十六进制的答案: 和八进制: 如何使用文字在Python中表示二进制? 答案摘要 Python 2.5及更早版本:可以使用,但不能使用文字来表示二进制。 Python 2.5和更早版本: 无法 表达二进制文字。 Python 2.6 beta:您可以这样做:或。 Python 2.6 beta:还将允许或(第二个字符为字母O)
本文向大家介绍您如何在Cucumber中使用正则表达式?,包括了您如何在Cucumber中使用正则表达式?的使用技巧和注意事项,需要的朋友参考一下 我们可以在Cucumber中使用正则表达式来选择功能文件中相似语句的集合。 示例 功能文件 步骤定义文件具有@Given(“([^ \”] *)season $“)中的@Given时间表,该表在正则表达式的帮助下将两个Given语句映射到Feature
我知道我可以在我的表单上创建一个绑定,以便能够访问和更新下表中的记录: 但这是通过从路由传递一个id来完成的 所以只有当我只需要向用户显示和更新一条记录/行时,这才有用。基本上就像一个博客条目,有一个标题,正文为一行。我只是想用户去的路线 /nav/edit/和它显示所有行的导航作为一个可编辑的输入发送回数据库。 我的问题是,如何从表中检索多行,并将它们的值显示到输入字段中,当用户编辑其字段时,这
我有一个有大约200张幻灯片的PowerPoint演示文稿。每张幻灯片都有一个图表,其中的数据通过到主xlsx文件的链接每月更新一次。 为了不在图表中显示空值(未来月份),我打开数据编辑器(图表右键单击>Edit data...)并选择直到当前月份的范围。 我在PowerPoint中为它写了一个宏:
问题内容: 在Hibernate中,可以在类路径的根目录中添加文件,并且在创建Hibernate会话时,将在数据库上执行该文件的SQL表达式。 但是,如果某些表达式分成两行或更多行,则Hibernate会引发异常。如何将SQL表达式分成更多行? 问题答案: 为了像我这样的人通过搜索找到此内容: 如果您使用的是Hibernate4,则可以添加以下属性 到您的hibernate配置(我的是JPA的)。
问题内容: 我现在正在定义Django模型,我意识到模型字段类型中没有。我确定有办法做到这一点,所以我不确定我缺少什么。我基本上有这样的事情: 在这种情况下,每个可以有多个,但这种关系应该是单向的,因为我不需要从知道其拥有它本身,因为我可能有许多不同的对象自身的情况下,如为例: 我将用模型中的什么替换(不存在)以表示这种关系?我来自Hibernate / JPA,在这里声明一对多关系非常简单: 如