首页 > 解决方案 > 如何使用 sqlalchemy 和 sqlite 执行插入语句?

问题描述

我正在尝试使用 sqlalchemy 执行 upsert。这是我的代码:

def add_product(session, item):
    insert_statement = insert(Product.__tablename__).values(
        id=item[0],
        name=item[1],
        price=item[2],
        units_sold=item[3]
    )
    do_update_statement = insert_statement.on_conflict_do_update(
        price=item[2],
        units_sold=item[3]
    )
    session.execute(do_update_statement)


class Product(Base):
    __tablename__ = 'products'

    id = Column(Integer, primary_key=True)
    name= Column(String)
    price= Column(Float)
    units_sold= Column(Integer)

但是,当我尝试执行此操作时,出现以下错误

sqlalchemy.exc.ArgumentError: subject table for an INSERT, UPDATE or DELETE expected, got 'products'.

为什么会发生这种情况,我该如何解决?此外,是否有更好的选项来创建 upsert 操作?

标签: sqlitesqlalchemy

解决方案


推荐阅读