我正在尝试从 python 脚本在 redshift 中运行查询,但出现错误:
sqlalchemy.exc.InternalError: (psycopg2.InternalError) ALTER EXTERNAL TABLE cannot run inside a transaction block
这是我的代码:
engine = create_engine(SQL_ENGINE % urlquote(REDSHIFT_PASS))
partition_date = (date.today() - timedelta(day)).strftime("%Y%m%d")
query = """alter table {table_name} add partition (dt={date_partition}) location 's3://dft-dwh-files/raw_data/google_analytics/revenue_per_channel/{date_partition}/';""".format(date_partition=partition_date,table_name=table_name)
conn = engine.connect()
conn.execute(query).execution_options(autocommit=True)
我怎样才能解决这个问题?
最佳答案
对于 PostgreSQL,您需要设置 isolation level至 AUTOCOMMIT
,不是 SQLAlchemy autocommit
:
conn.execution_options(isolation_level="AUTOCOMMIT").execute(query)
关于python - Sql Alchemy 不能在事务 block 内运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959599/