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})
  • 相关阅读:
    js原生碰撞检测
    基于栈的指令集与基于寄存器的指令集
    偏向锁,轻量级锁
    java 内存模型
    JVM即时编译器
    动态分配
    静态分配
    栈帧笔记
    类加载器
    类加载过程
  • 原文地址:https://www.cnblogs.com/ice5/p/15071308.html
Copyright © 2011-2022 走看看