python - Sql Alchemy 不能在事务 block 内运行

标签 python sqlalchemy amazon-redshift

我正在尝试从 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 levelAUTOCOMMIT ,不是 SQLAlchemy autocommit :

conn.execution_options(isolation_level="AUTOCOMMIT").execute(query)

关于python - Sql Alchemy 不能在事务 block 内运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959599/

相关文章:

mysql - 从非常大的表中导出逗号分隔的数据

Python单元测试断言引发错误

python - scikit learn中的GridSearchCV如何选择k折的最佳参数

python - 从 Flask View 中推送 celery 任务分离 SQLAlchemy 实例(DetachedInstanceError)

python - 无法在 Windows 机器上使用 sqlalchemy 连接到本地 mysql 数据库

amazon-redshift - Redshift : how to remove all newline characters in a field

Python 通用函数调度

python - curses.wrapper() 不工作 [python]

python - 如何在Python中动态检索模型列值

amazon-web-services - AWS Datapipeline RedShiftCopyActivity-如何指定 "columns"