AttributeError: 'NoneType' 对象在 Prefect 中没有属性 'fetchall'

问题描述

过去几个月我一直在生产中使用以下代码

@task
def sql_run_procs():
    """This is a delete and update..."""
    # Get our logger
    logger = prefect.utilities.logging.get_logger()  # type: ignore

    conn = connect_db(prefect.config.kv.p.prod_db_constring,logger)  ## wrapper around create_engine()

    with conn.connect() as con:
        try:
            r = con.execute(
                f"EXECUTE fs.spETL_MyProc '{prefect.config.kv.p.staging_db_name}'"
            ).fetchall()
            for q in r[0]:
                if q == 1:
                    logger.info(f"Query {q} has Failed")
                    raise signals.FAIL()
        except :
            raise sqlAlchemyError("Error in sql Script")

所以像任何优秀的编码员一样,我将代码复制并粘贴到另一个脚本中

@task
def sql_run_procs():
    """This is a clean,truncate and insert"""
    # Get our logger
    logger = prefect.utilities.logging.get_logger()  # type: ignore

    conn = connect_db(prefect.config.kv.p.prod_db_constring,logger)

    with conn.connect() as con:
        try:
            r = con.execute(
                f"EXECUTE forms.spETL_MyOtherProc '{prefect.config.kv.p.staging_db_name}'"
            ).fetchall()
            for q in r[0]:
                if q == 1:
                    logger.info(f"Query {q} has Failed")
                    raise signals.FAIL()
        except :
            raise sqlAlchemyError("Error in sql Script")

并得到以下错误

AttributeError: 'nonetype' 对象没有属性 'fetchall'

除了存储过程的名称外,唯一的区别是它们在不同的 Prefect 项目中。我已经在这个网站和其他网站上搜索了可能的解决方案,但没有成功。我知道这可能是有什么东西正盯着我的脸,但一个半小时后……你知道。提前致谢。

解决方法

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

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

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