SqlAlchemy无法在Redshift上使用psycopg2打开与OID的关系

时间:2020-10-21 15:35:12

标签: python-3.x sqlalchemy amazon-redshift psycopg2

我有一个python脚本,例如:

db = connection.get_engine(my_conn)
run_query(db, query1, LOGGER)
run_query(db, query2, LOGGER)
run_query(db, query3, LOGGER)
run_query(db, query4, LOGGER)
run_query(db, query5, LOGGER)

运行query4时返回以下错误,但有时在上一个查询中返回相同的错误。

(psycopg2.errors.InternalError_) could not open relation with OID 3463635

get_engine函数是:

config = json.load(open(FILE, "r"))
    tangelo_bi_redshift_engine = create_engine(
        "redshift+psycopg2://{0}:{1}@{2}:{3}/{4}".format(
            config["usr"], config["pwd"], config["host"], config["prt"], config["db"], connect_timeout=60, **kwargs),
        connect_args={'sslmode': 'prefer'})
    return con

run_query函数是:

conn = db.connect()
    try:
        conn.execute(query)
    except Exception as e:
        logger.error(str(e))
        raise
    finally:
        conn.close()
    return

最近我一直在更改代码,但与此无关。但是我接触了一些与Boto3一起使用的功能。如您所见,其中任何一个都与该库有关。

此外,我在使用的SQL IDE中尝试了query4:

INSERT INTO schema.table (field)
            SELECT field 
            FROM stg_table stg
            LEFT JOIN dim_table dim
            ON stg.id = dim.id
            WHERE dim.id IS NULL;

它工作正常。因此该表存在,因此不可能是与意外删除表有关的错误。

有什么建议吗?

0 个答案:

没有答案