当我试图更新表中的一行时,为什么要从SQLAlchemy获取“FROM expression expected”?

2024-10-03 06:23:48 发布

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

我试图更新表中的一行,但遇到参数错误。在

代码如下:

inventory_host = InventoryHost(ipv4_addr=ipv4, ipv6_addr=ipv6, macaddr=mac, host_name=name)

try:
    session.add(inventory_host)
    session.commit()
except sqlalchemy.exc.IntegrityError:
    session.execute(update(inventory_host))
    session.commit()

session.close()

这是我得到的错误:

^{pr2}$

session.add(inventory_host)适用于inventory_host表中的新主机,但只要我尝试使用session.execute(update(inventory_host))更新行,就会得到错误。在


Tags: 代码nameaddhostexecute参数session错误
1条回答
网友
1楼 · 发布于 2024-10-03 06:23:48

update将表名作为其第一个参数,而不是表类的实例。要更新什么值?例如,如果要更新主机名,则可以执行以下操作:

from sqlalchemy import update

# Ideally, just use your primary key(s) in your where clause; I'm not sure what they are
stmt = (update(InventoryHost).where(ipv4_addr=ipv4, ipv6_addr=ipv6, macaddr=mac)
        .values(host_name=name)    # updates the host_name, for example
session.execute(stmt)
...

相关问题 更多 >