Python with psycopg2 kullanıyorum ve birkaç bin satır ekleyen günlük bir işlemden sonra tam bir VACUUM
çalıştırmaya çalışıyorum.PostgreSQL - VACUUM'u işlem bloğu dışındaki koddan nasıl çalıştırılır?
psycopg2.InternalError: VACUUM cannot run inside a transaction block
nasıl bir hareket kümesinin dışında koddan bu çalıştırırım: Sorun aşağıdaki hatayı alıyorum benim kodundaki VACUUM
komutunu çalıştırmayı denediğinizde bu?
class db(object):
def __init__(dbname, host, port, user, password):
self.conn = psycopg2.connect("dbname=%s host=%s port=%s \
user=%s password=%s" \
% (dbname, host, port, user, password))
self.cursor = self.conn.cursor()
def _doQuery(self, query):
self.cursor.execute(query)
self.conn.commit()
def vacuum(self):
query = "VACUUM FULL"
self._doQuery(query)
END TRANSAKSİYONU göndermeyi deneyin? – nosklo
@nosklo, İyi öneri, ancak COMMIT ile aynı olan Postgres belgelerine göre. –
SQLAlchemy'ı herhangi bir şansla kullanıyor musunuz? Benzer bir sorunla karşılaştım çünkü autocommit = true değerinde SqlAlchemy ayarı gerçekte * işlemleri kapatmaz. 'Set_isolation_level' kullanımı, psycopg2 bağlantısının dahili yöntemlerine erişen bir çalışmadır. –