【发布时间】:2020-10-14 21:19:29
【问题描述】:
我正在使用 sqlalchemy orm 将 json 映射到多个表。 我有两张桌子,每张桌子都有一个班级。
其中一个表有一个参数,它是一个字典列表,必须映射到第二个表的不同列。
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class A(Base):
__tablename__ = 'a'
id = Column(primary_key, Interger(10))
param1 = Column(String(45))
param2 = Column(String(45))
atobmap = relationship('B', lazy='subquery', back_populates="a")
class B(Base):
__tablename__ = 'b'
bid = Column(primary_key=True, nullable=True, Integer(15))
bparam1 = Column(ForeignKey('a.id'), nullable=False)
bparam2 = Column(String(45))
a = relationship('A', back_populates='b')
示例 json:
{
"id": 1,
"param1": "Value",
"param2": "Value",
"atobmap": [
{ "bid": 1,
"bparam1": 1,
"bparam2": "Value"
},
{ "bid": 2,
"bparam1": 1,
"bparam2": "Value"
}
]
}
当我手动将数据插入表并执行 GET 时,它工作正常并且按预期返回值,尽管它在我的 atobmap 字典中添加了一个带有 value {} 的 _sa_instance_state 键。
{
...
"atobmap": [
{ "_sa_instance_state": {}
"bid": 1,
"bparam1": 1,
"bparam2": "Value"
},
{ "_sa_instance_state": {}
"bid": 2,
"bparam1": 1,
"bparam2": "Value"
}
]
}
但是当我尝试发布这些值时,它会抛出一个 错误 说 "Unhashable type: dict".
【问题讨论】:
-
您应该添加更多实际执行插入的代码或引发错误的行
标签: python sqlalchemy