我正在尝试通过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
在这里工作?