python - Sqlalchemy:如何更新连接表继承中的父记录
问题描述
我正在尝试更新连接表继承中的记录,但收到一条错误消息,指出该列不存在(因为它在技术上位于父表中)。这是使用 Flask-Sqlalchemy / Postgres。
模型 (连接表继承):
class Job:
__tablename__ = "job"
id = db.Column(db.Integer, primary_key=True, nullable=False)
currency = db.Column(db.Float)
type = db.Column(db.String(100))
__mapper_args__ = {
"polymorphic_identity": "type",
"polymorphic_on": type,
}
...
class Plumber(Career):
__tablename__ = "plumber"
glue_type = db.Column(db.String(100))
__mapper_args__ = {
"polymorphic_identity": "plumber",
}
...
询问:
Plumber.query.filter_by({"currency":"USD"}).update({"currency":"Euro", "glue_type":"acrylic"))
db.session.commit()
错误
(psycopg2.errors.UndefinedColumn) column "currency" of relation "plumber" does not exist
问题
plumber
是否可以使用在表中找到的数据和job
一个查询中的表来更新 Plumber 表?我该怎么做?
解决方案
update_data = {"currency":"Euro", "glue_type":"acrylic")
inst = Plumber.query.filter_by({"currency":"USD"}).first()
for col, val in update_data.items():
setattr(inst, col, val)
db.session.commit()
推荐阅读
- javascript - 如何更新 Arr 对象中的状态?
- javascript - VueX 商店中的 VueJS 错误处理最佳实践
- web - 为什么 script-src-elem 不使用 script-src 中的值作为后备?
- python - 在 Airflow 中使用 Sqoop 运算符在 HIVE 表中使用“//N”空字符串参数导致“/N”字符串值
- node.js - 玩笑测试中过于冗长的日志记录
- python - 在 Python 中将 *s 模式打印到 .txt 文件中
- sql-server - WHILE 循环从映射表更新记录
- sql - 有没有办法计算包含时间格式数据的整个列的平均排队时间
- php - 在 cURL 之前检查代理
- python - 尝试选择 DataFrame 的子集时出现 KeyError