如何在SQLAlchemy中手动提交?

时间:2017-11-04 08:42:27

标签: postgresql pandas sqlalchemy psycopg2

我正在尝试通过SQLAlchemy运行VACUUM,但它不起作用,因为它在事务块中。

with engine.begin() as connection:
    S = orm.session.sessionmaker()()
    pd.io.sql.execute('DROP TABLE IF EXISTS %s' % table_name, connection)
    df.to_sql(table_name, connection, chunksize=1000)
    S.commit()
    S.close()

engine.execute('VACUUM')

如您所见,我手动提交并关闭会话,但仍有例外:

File "../__init__.py", line 115, in write_file engine.execute('VACUUM')
...
cursor.execute(statement, parameters)
sqlalchemy.exc.InternalError: (psycopg2.InternalError) VACUUM cannot run inside a transaction block
[SQL: 'VACUUM']

我尝试了所有方法,并阅读了其他案例和建议,但每个人似乎都建议autocommit我不能在这种情况下使用。

如何让VACUUM在这里工作?

0 个答案:

没有答案