zoukankan      html  css  js  c++  java
  • ArgumentError("subject table for an INSERT, UPDATE or DELETE expected, got Column('id', Integer(), table=<user>, primary_key=True, nullable=False)."

    python项目中,如果使用的 SQLAlchemy 操作数据库,当表名和对应的项目中的对象名不一样时,更新数据时会报错

    ArgumentError("subject table for an INSERT, UPDATE or DELETE expected, got Column('id', Integer(), table=<user>, primary_key=True, nullable=False)."

    数据库表名

    user

    数据库表对应的对象

    class UserInfo(BaseModel):
        __tablename__ = "user"
        # ID
        id = Column(Integer, primary_key=True, nullable=False)
        ...

    对象是通过 __tablename__ 属性做了和数据库表的映射

    ---

    更新数据的代码(报错时),注意粗体标红部分

        with session_commit_maker() as db_session:
            result = db_session.query(UserInfo.id)
                .filter(UserInfo.id == uid)
                .update({"name": new_name})

    将以上粗体标红部分改为 UserInfo 即可解决该问

        with session_commit_maker() as db_session:
            result = db_session.query(UserInfo)
                .filter(UserInfo.id == uid)
                .update({"name": new_name})
  • 相关阅读:
    Linux pmap 工具
    bzoj 1060 贪心
    bzoj 1076 状压DP
    bzoj 1150 贪心
    bzoj 1412 最小割 网络流
    bzoj 3212 线段树
    bzoj 1942 斜率优化DP
    bzoj 1876 高精
    bzoj 1880 最短路
    斜率优化DP讲解
  • 原文地址:https://www.cnblogs.com/ice5/p/15071308.html
Copyright © 2011-2022 走看看