python - 如何批量分配 SA ORM 对象属性?

标签 python sqlalchemy

我有一个 ORM 映射对象,我想更新它。我在字典(关键字参数)中验证并保护了所有属性。现在我想更新字典中的所有对象属性。

for k,v in kw.items():
    setattr(myobject, k, v)

不工作(AttributeError 异常),从 SQLAlchemy 抛出。

myobject.attr1 = kw['attr1']
myobject.attr2 = kw['attr2']
myobject.attr3 = kw['attr3']

etc 是可怕的复制粘贴代码,我想避免这种情况。#

我怎样才能做到这一点? SQLAlchemy 已经做了一些类似于我想在它们的构造函数中做的事情( myobject = MyClass(**kw) ),但我无法在所有元编程中找到混淆的废话。

来自 SA 的错误:

<<          if self.trackparent:
                   if value is not None:
                       self.sethasparent(instance_state(value), True)
                   if previous is not value and previous is not None:
                       self.sethasparent(instance_state(previous), False)
>>  self.sethasparent(instance_state(value), True)
AttributeError: 'unicode' object has no attribute '_sa_instance_state'

最佳答案

myobject.__dict__.update(**kw)

关于python - 如何批量分配 SA ORM 对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1334171/

相关文章:

sql - 了解 Snowflake 中的锁和查询状态(对单个表的多次更新)

postgresql - 用于数据库连接的 Flask before_request 和 teardown_request

python - 抑制单元测试中的补充错误消息

python - 石头、剪刀、布不会让用户获胜

python - SQL Alchemy 默认值函数,用于在唯一的父子记录组中模拟自动增量

reactjs - axios post请求错误,来自react的422(不可处理的实体)

Python:在 VS Code 中发现单元测试失败

python - 从 __getattr__ 方法检索的模拟函数

python - Jupyter Notebook 安装破坏了 sqlite3

python - SQL炼金术;获取相关表/类的列表