Flask sqlalchemy绑定参数0时出错

2024-10-02 22:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习用flask开发web应用程序,但现在我在使用flask sqlalchemy时遇到了这个错误:

Original exception was: (InterfaceError) Error binding parameter 0 - probably unsupported type. 
u'INSERT INTO standards (std_insumo_id, std_name_id, cantidad, viviendas) VALUES (?, ?, ?, ?)' (...)",))

这些是我的模型

^{pr2}$

当我试图插入行时,这就是我要做的:

cemento = Insumo.query.filter_by(descripcion="Cemento").first()
mamp = StandardName.query.filter_by(name="Mamposteria").first()

这两个已经存在于数据库中,所以没有问题。当我试图使用model:Standard时,问题就出现了

r1 = Standard(std_insumo_id=cemento, std_name_id=mamp, cantidad=10, viviendas=40)
db.session.add(r1)
db.session.commit()

你能帮我了解一下发生了什么事吗?我看不出这些型号有什么问题。在


Tags: nameidflaskbyfilterquerystandardfirst
1条回答
网友
1楼 · 发布于 2024-10-02 22:28:25

这里:

r1 = Standard(std_insumo_id=cemento, ...)
#             ^^^^^^^^^^^^^^^^^^^^^

根据此处的声明,Standard需要std_insumo_id的值,该值应该是int,如下所示:

^{pr2}$

但你有

cemento = Insumo.query.filter_by(descripcion="Cemento").first()

所以cementoInsumo实例,而不是int。您可以做这些事情,但是除了列级映射之外,还需要使用^{}提供一个类级别的映射

class Standard(db.Model):
    std_insumo_id = db.Column(db.Integer, db.ForeignKey('insumos.codigo'))
    std_insumo = relationship(Insumo)

然后呢

r1 = Standard(std_insumo=cemento, ...)
^             ^^^^^^^^^^

没有“_id

相关问题 更多 >