使用SQLAlchemy更新行时如何解决Object不存在异常?

问题描述

当我第一次搜索该异常时,有多个名称object doesnot exist的异常,但是它们都与数据库中使用的表无关。我需要根据两列design_id和step_name的where条件更新几列,应该更新列time_logged and eoh_buffer_factor。我正在使用Flask-RestFul API提交整个内容

我有一个Model对象,其中包含使用的表的列。 model_buffer_input_eoh.py文件

import sqlalchemy as sa
from sqlalchemy import Float,DateTime,String,Integer
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class BufferInputEoh(Base):
    __tablename__ = 'BUFFER_INPUT_EOH_TEST'
    __table_args__ = {'quote': False,'extend_existing': True}
    id = sa.Column(Integer,primary_key=True)
    eoh_buffer_factor = sa.Column(Float)
    time_logged = sa.Column(DateTime)
    mfg_facility_id = sa.Column(String)
    design_id = sa.Column(String)
    step_name = sa.Column(String)

    def __init__(self,eoh_buffer_factor,time_logged,mfg_facility_id,design_id,step_name):
        self.eoh_buffer_factor = eoh_buffer_factor
        self.time_logged = time_logged
        self.mfg_facility_id = mfg_facility_id
        self.design_id = design_id
        self.step_name = step_name

    def json(self):
        return {'Updated record': '{},{},{}'.format(self.eoh_buffer_factor,self.time_logged,self.design_id,self.mfg_facility_id,self.step_name)}

我的API类:

从models.model_buffer_input_eoh导入BufferInputEoh

class UpdEohInputCapacity(Resource):

    @classmethod
    def post(self):
        try:
            engine = datasource.lookup('Fab_16')
            connection = engine.connect()
            Session = sessionmaker()
            Session.configure(bind=engine)
            session = Session()
            dbname = datasource.get_db_name(data['fab'],'test')
            row = session.query(BufferInputEoh).filter(row_data.design_id == DESIGN_ID).filter(row_data.step_name == STEP_NAME).first()
            row.time_logged = TIME_LOGGED
            row.eoh_buffer_factor = EOH_BUFFER_FACTOR
            session.commit()
            connection.close()
        except Exception as e:
            return {'message': 'Proc execution Failed with error => {error}'.format(error=e)},201
        pass

我在数据库中有该表,并且试图与之运行查询用户具有各种访问权限。但是,当我提交代码时,它将以Object 'BUFFER_INPUT_EOH_TEST' does not exist

结尾

完全例外:

(sNowflake.connector.errors.ProgrammingError) 002003 (42S02): 0196c513-05a1-8f94-0037-dd0286a14457: sql compilation error:\nObject 'BUFFER_INPUT_EOH_TEST' does not exist or not authorized.\n[sql: SELECT BUFFER_INPUT_EOH_TEST.id AS BUFFER_INPUT_EOH_TEST_id,BUFFER_INPUT_EOH_TEST.eoh_buffer_factor AS BUFFER_INPUT_EOH_TEST_eoh_buffer_factor,BUFFER_INPUT_EOH_TEST.time_logged AS BUFFER_INPUT_EOH_TEST_time_logged,BUFFER_INPUT_EOH_TEST.mfg_facility_id AS BUFFER_INPUT_EOH_TEST_mfg_facility_id,BUFFER_INPUT_EOH_TEST.design_id AS BUFFER_INPUT_EOH_TEST_design_id,BUFFER_INPUT_EOH_TEST.step_name AS BUFFER_INPUT_EOH_TEST_step_name \nFROM BUFFER_INPUT_EOH_TEST \nWHERE true\n LIMIT %(param_1)s]\n[parameters: {'param_1': 1}]\n(Background on this error at: http://sqlalche.me/e/13/f405)

我能够理解是什么导致了异常,因为表,数据库,访问都在那儿,但我仍然看到找不到与所用表有关的对象异常。 任何人都可以让我知道如何解决代码中的错误,以避免上面看到的异常吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)