在 SQLAlchemy 中从集合中删除对象

2023-11-25

我将大量专利数据存储在 MySQL 数据库中,并通过 SQLAlchemy 与其进行交互。我在专利类中有一个集合,代表受让人列表(被分配专利的公司):

assignees = relationship('Company', secondary=patent_company_table, backref='patents')

我正在处理存储在数据库中的一些对象以及专利对象p,我想删除一些受让人a(公司对象)来自p的受让人名单。基于http://docs.sqlalchemy.org/en/latest/orm/session.html#deleting-from-collections,似乎调用s.delete(a)实际上会删除 Company 对象a。我只是想删除受让人a从受让人名单中p(即删除patent_company_table中的一行),实际上并没有删除Company对象,因为a可能在另一个专利对象的受让人列表中。

我尝试创建一个新列表new_assignees只包括受让人p除了a然后调用:

p.assignees = new_assignees
s.add(p)

不幸的是,这实际上并没有标记p因为脏,所以我认为它不会影响数据库。

对于如何从集合中删除对象(删除patent_company_table 中的行而不是从Company 表中删除对象),您有什么建议吗?

谢谢。

UPDATE

这是代码片段:

assignees = patent.assignees
for assignee in assignees:
    if assignee in duplicate_company_to_default:
        patent.assignees.remove(assignee)
        default_company = duplicate_company_to_default[assignee]
        if default_company not in assignees:
            added_patent_count += 1
            patent.assignees.append(default_company)

遍历完所有专利后,added_patent_count = 983672但里面没有任何对象session.dirty()。修改via后是否需要手动添加到会话中append or remove?


SQLAlchemy 集合支持类似列表的追加/删除操作。

p.assignees.remove(c)

这应该删除c form p.assignees不删除c来自数据库。

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

在 SQLAlchemy 中从集合中删除对象 的相关文章

  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 使用 Ember (cli) 如何进行验收测试以等待承诺?

    在我的 Ember 应用程序中 我目前有一个模型findResults返回一个承诺的函数 该承诺包装了 Google Places 库以获取自动完成的结果 为了在我的 UI 中使用它 我设置了一个 PromiseMixin 控制器 我指示控
  • Selenium Python:如何在弹出窗口中向下滚动

    我正在从事 Linkedin 网络抓取项目 我正在尝试获取某人感兴趣的公司列表 请注意 我没有使用 API 这是一个动态网站 因此我需要向下滚动 同时抓取公司名称 我知道如何在主窗口中执行此操作 但由于兴趣是一个弹出窗口this滚动不起作用
  • 如何获取设备型号? [复制]

    这个问题在这里已经有答案了 如何获取设备型号名称 我有一台 Yuphoria 5010 设备型号中显示 YU5010 我想获取设备的全名 我想要获取下面给出的确切字符串 尤佛利亚 5010 6 0 棉花糖 其实很简单 只需要调用 Strin
  • 当我退出程序时以编程方式关闭 GPS

    我已经通过编程方式启动了我的 GPS 意图 myIntent 新意图 Settings ACTION SECURITY SETTINGS mContext startActivity myIntent 当我退出程序时如何关闭 GPS 尝试这
  • RIA 服务 OData“不允许查询选项。”

    我有一个由 RIA 自动创建的 OData 端点 它似乎适用于简单的 获取 查询 E g http xxx Service BusinessApplication1 Web DomainService1 svc odata ProductS
  • 使用 $ORIGIN 指定 ELF 二进制文件中的解释器不起作用

    我在用着patchelf修改 rpath 和已编译二进制文件的解释器 对 patchelf 的调用如下所示 patchelf set interpreter ORIGIN lib ld linux x86 64 so 2 set rpath
  • 转储 ChartJS 数据中缺失的日期

    假设我将使用 ChartJS 中的折线图 并且我有 按日期计算的值 数据 例子 5 05 11 2014 10 04 11 2014 55 01 11 2014 该图表将包含 3 个点 有没有任何解决方案 配置可以让我自动添加 转储 缺失日
  • 编写 repr 方法

    情况 我是Python新手 目前正在尝试学习诀窍 我尝试创建一个链表类来帮助更好地理解该语言及其结构 我知道 repr 函数基本上应该返回相同的东西 str 但我不确定实际的区别是什么 到目前为止 这是我的课程 class LinkedLi
  • 如何声明多个变量?

    这是字母 letters ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 我用这个列出了它的清单 chars for i in letters chars app
  • 将文本安全转换为 XML

    我的 SQL Server 2005 数据库中有超过一百万行 其中一个文本列包含 XML 字符串 我想将文本转换为 XML 数据类型 以便提取部分数据 问题是有些记录在转换时会抛出错误 即无效的 XML 如何忽略这些错误 以便正确转换所有有
  • 检索 Groovy 闭包/方法参数列表

    我们如何通过参数数组以 javascript 风格动态检索 groovy 中闭包 方法的参数列表 举例来说 我想以这种方式记录一条消息 def closure name id gt log debug Executing method wi
  • 如何删除所有控件的全局 FocusVisualStyle?

    我遇到了同样的问题全局停用 FocusVisualStyle 但所有答案都不起作用 所以 我只想设置我的应用程序中的所有控件FocusVisualStyle x Null 任何 实现这一目标的有效方法是什么 我不想单独设置每个控件 将其放入
  • 网络聊天应用程序 - ASP.NET/Jabber/Ajax/WCF/Comet/ReverseAjax - 面临的问题 - 寻求见解

    在过去的三周里 我一直在尝试构建一个基于网络的聊天应用程序 但我在构建它时遇到了任何路线 编程技术 技术 的问题 我在下面解释了我遇到的所有问题 请提供您对此的任何见解 ASP NET AJAX 第一个问题是不是真正的实时 如果客户端每 x
  • 跨域网址

    我试图在我的 javascript 代码中调用这个 URL 这是我的 JavaScript 代码 ajax url http api addressify com au address autoComplete type GET cross
  • ES6 类的 jest.mock 产生 ReferenceError: require is not Defined

    我正在尝试在我的 ES6 javascript 项目中使用 jest 创建一个自动模拟 我正在使用节点v15 0 1 还有开玩笑26 6 0在Ubuntu上18 04 5 我有一个包含以下代码的测试文件 import RenderBuffe
  • 在 WPF 中未指定控件名称...性能影响

    如果需要从后面的代码访问 WPF 控件 则需要提供Name在 XAML 中为其添加属性 在许多情况下 您不需要从后面的代码访问控件 因为许多编码逻辑 例如绑定 最好直接在 XAML 中应用 我的问题是 是否有性能提升not向控件提供名称属性
  • SQL Server 临时表在 pyodbc 代码中不可用

    我正在 python 中运行一系列复杂的 sql 查询 它涉及临时表 我的自动提交方法似乎无法从临时表中检索数据 我在下面使用的代码片段是我得到的输出 testQuery Select top 10 INTO Temp1 FROM Tabl
  • Webpack 开发服务器抛出错误 - 拒绝执行脚本,因为其 MIME 类型('text/html')不可执行

    我使用 Webpack 捆绑器和 Webpack 开发服务器进行本地开发 前端采用React js Redux 后端采用Node js和koajs 在后端 我使用护照用于用户身份验证的库和其他库koa 护照 护照脸书 护照谷歌身份验证通过
  • 如何从二维数组中删除一行?

    我有一个简单的数组 有点像这样 1 2 3 4 5 6 7 8 9 6 2 7 2 9 6 8 10 5 2 6 4 7 8 4 3 2 5 9 8 7 5 9 7 4 1 10 5 3 6 8 2 7 3 7 2 所以 我们称之为matr
  • 在 SQLAlchemy 中从集合中删除对象

    我将大量专利数据存储在 MySQL 数据库中 并通过 SQLAlchemy 与其进行交互 我在专利类中有一个集合 代表受让人列表 被分配专利的公司 assignees relationship Company secondary paten