【问题标题】:SqlAlchemy flask cascade save jsonSqlAlchemy烧瓶级联保存json
【发布时间】:2015-12-16 14:01:55
【问题描述】:

我有以下课程:

class Identity(Base):
"Identity model."

__tablename__ = 'identity'

id = Column('ID_IDENTITY', Integer, Sequence('identity_seq'), primary_key=True, nullable=False)
uuid = Column('DS_UUID', String(32), ForeignKey('customer.NX_UUID'), nullable=False)
type = Column('DS_TYPE', String(255), nullable=False)
value = Column('DS_VALUE', String(255), nullable=False)

class Customer(Base):
"Customer model."

__tablename__ = 'customer'

uuid = Column('NX_UUID', String(32), primary_key=True, nullable=False)
name = Column('DS_NICK_NAME', String(255), nullable=False)

identities = relationship(Identity, backref=backref('custome', cascade='all', uselist=True), lazy='dynamic')

我想发布一个传递身份列表的新客户,我尝试使用以下 json 来做到这一点:

{"name":"Teste", uuid: "12121212121","identities":[{"type":"cpf","value":"05882110955"}, {"CNPJ":"0123456656"}, {"RG":"AAA3243"}]}

但我得到了错误:

 unhashable type: 'dict'

有什么想法可以做到这一点?

tks

【问题讨论】:

    标签: python json flask flask-sqlalchemy


    【解决方案1】:

    您需要将身份创建为 SQLAlchemy 模型对象,如下所示:

    cust = Customer(name="Test", uuid="12121212121")
    id1 = Identity(type="cpf", value="05882110955", uuid="asdasda")
    id2 = Identity(type="CNPJ", value="0123456656", uuid="sdzxc3")
    
    cust.identites = [id1, id2]
    db_session.add(cust)
    db_session.commit()
    

    【讨论】:

    • 我正在这样做,但我想在相同的操作中将我的 json 映射到 python 对象中保存。像这样: cust = Customer (**json_data) db_session.add(cust) db_session.commit()
    • 也需要对字典中的 Identity 对象做同样的事情。
    • 是的,但我不想分开,我需要一个解决方案,我传递任何 json(带有关系)并转换为对象(如客户)。如果我有更多的关系,我只需要传递这个 json。
    猜你喜欢
    • 2018-12-09
    • 1970-01-01
    • 2012-12-29
    • 2018-07-07
    • 2014-07-20
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多